fixes#89
instead of saving the multiaddr received in the listen method of the
tcp transport class, read what the service is actually listening on
this allow to use 0 as port and let the OS choose a free port for us
* Improved peer ID construction and usage
* peer id object is directly passed to the network
no need to cast from a string to an ID
* don't base64 encode the peer id when loading from public key
* use proper multiaddr address
- keep multiaddr object into peerstore instead of string
- update network code to use new multiaddr lib
- update tests and example
* don't instanciate peerstore object in constructor
This has side effect where the same peerstore
is used for different instance of Libp2p
* add connect method to basic_host
* use zaibon's fork of sbuss/py-multiaddr
* lint