Fixes issue #2399 by optionally returning a SocketAddress from
TCPServer::accept().
This entails changes to underlying NetworkStack and nsapi. This
commit deals only with lwip and higher level APIs; other users of
NetworkStack and nsapi may be affected. Currently lwip is the only
in-tree user of nsapi.
Previously the EthernetInterface class was unable to be connected
after being brought down. The core issue is that lwip was not designed
to be completely brought down due once initialized.
To work around this, the ethernet interface only initializes once and
leaves itself up after a disconnect call. The DHCP lease is still
released/acquired on disconnect/connect.