Network Adapter Refactoring and Tests

There were a few confusing naming conventions specifically with network adapter and network service that i clarified.

There was also some circular logic in the network adapter code that needed more clarification. 
The NetAdapter interface now contains the HandleMessage method. 

Network Adapter needed tests so I went ahead and implemented some tests. 2 of the tests will fail because they depend on a TODO method from Brian, so they are currently commented out. 
The NetworkAdapater is for use by the BitSwap/Exchange object. It doesn't need to know how the adapter interfaces with the network service.

The idea is that you instantiate the network adapter with a service and then give the adapter to the exchange. Then the exchange just interfaces with the adapter using the minimal exposed interface.