* 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
* Implement protocol muxing
* Integrate protocol muxing into new stream and listen's conn handler
* Fix bugs in protocol muxing
* Remove blank line
* Add comments and fix linting issues
* Fix order of parameters to select_one_of to match interface
* Use array of protocol ids in new stream instead of protocol id
* Add basic protocol muxer tests
* Add todo
* Modify new stream to take in protocol ids
* Add check to all tests to ensure protocol id is saved to net stream properly
* Lint tests
* Fix lint issues
* Add todo
* Modify port numbers in tests
* Fix linting issues
* Add more documentation to functions
* Add docs describing classes and fix indent error