* Rename Transport::RawConn to Output
* Remove AsyncRead + AsyncWrite bound on Transport::Output
* UpgradedNode now always implements Transport
* Add and tweak modifiers for Transport and ConnectionUpgrade
* Secio upgrade now returns the pubkey in its output
* Add upgrade::apply
* Add Transport::and_then
* Rework the swarm
* Rustfmt
* Fix concerns
* Impl Clone for SwarmController and remove 'static
* Implement Kademlia
* Implement ConnectionReuse correctly
* Implement ConnectionReuse correctly
* Add some tests and fixes
* Remove useless boolean in active_connections
* Correctly run tests
* Optimize the processing
* Rustfmt on libp2p-kad
* Improve Kademlia example
* Next incoming is now in two steps
* Some work
* Remove log
* Fix dialing a node even if we already have a connection
* Add a proper PeerId to Peerstore
* Turn identify into a transport layer
* Expose the dialed multiaddress
* Add identified nodes to the peerstore
* Allow configuring the TTL of the addresses
* Split identify in two modules
* Some comments and tweaks
* Run rustfmt
* More work
* Add test and bugfix
* Fix everything
* Start transition to new identify system
* More work
* Minor style
* Start implementation of Kademlia server upgrade
* Continue implementing the Kademlia server
* Start reimplementing high-level kademlia code
* Continue reimplementing high-level code
* More work
* More work
* More work
* Fix wrong address reported when dialing
* Make it work
* Remove cluster_level field everywhere
* Fix bug in varint-rs when encoding
* More work
* More work
* More work
* More work
* More work
* Bugfix
* More work
* Implement ping
* Style in kademlia_handler
* More work
* Better error handling in query.rs
* More work
* More work
* More work
* Debug impls
* Some cleanup in swarm
* More work
* Clean up changes in swarm
* Unpublish the kbucket module
* Fix examples and some warnings
* Fix websocket browser code
* Rustfmt on libp2p-kad
* Kad initialization process
* Add logging to the example
* Fix concerns
* Fix style