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