Abstract methods overriden by subclass.

* TransportLayer is never instantiated, so all its overriden methods
  are dead code, since the subclass never refers to them.
Remove unused methods (iteration 1).
Remove unused methods (iteration 2).
Remove unused methods (iteration 3).
Remove unused methods (iteration 4) and imports.
Remove unused uri_parts.

* Also remove tests.
Remove unused code from protocol module.
Remove tests of dropped functions.
Various cleanups.

* Move `store` function to CryptoTransportLayer; TransportLayer has no
  `dht` attribute.
* Drop getters for public attributes.
* Clarify code using `get`.
* Use None as default callback.
* Minor style fixes.
ask users for permission before upgrading all their homebrew packages
Merge pull request #830 from davidhq/develop

ask users for permission before upgrading all their homebrew packages
Merge pull request #828 from yagoulas/thin_transport2

Remove dead code from transport.py
Delegate splitting to the KBucket.

* A KBucket should handle the details of its splitting. This
  will enable using different subclasses of KBucket with the
  RoutingTable. It is also necessary to write thread-safe code.
* Test kbucket.splitKBucket.
Add and test MemKBucket.

* Test MemKbucket initialization.
* Test MemKbucket against the superclass testsuite.
* Model replacement cache as a deque.
* Test cache-splitting.
* Test contact replacement from cache.
Protect access to KBucket attributes via an RLock.

* A Kbucket is now a thread-safe object.
Replace TreeRoutingTable by OptimizedTreeRoutingTable.

* Dump splitKBucket inside addContact.
* Some docstring fixes.
* Drop TreeRoutingTable from the testsuite.
* Test removing absent contact should not throw ValueError.
Only return all contacts if count is negative.

* Fix a bug where OptimizedTreeRoutingTable.findCloseNodes would return
  more nodes than requested.