This accomplishes two things:
1. Provides a simple route for adding static IP address support to the
base NetworkInterface
2. Provides a simple route for adding configurability to network
interfaces and unifies the network interface to consistent connect
call, allowing network interfaces to be passed around abstractly
NetworkInterface
- set_network
- set_dhcp
WiFiInterface
- set_credentials
CellularInterface
- set_credentials
General refactoring of the API and new methods added:
* get_rssi() - measures radio signal strenght
* get_state() - returns current state (not connected,
connecting, connected, error)
* scan() - scans for available networks sync and async versions
* connect_async() - connect to a network without blocking