reuse CryptoPeerConnection objects instead of always creating new ones

Signed-off-by: Thomas Stilwell <stilwellt@openlabs.co>
Merge pull request #1006 from benemorius/peerconnection-reuse

reuse CryptoPeerConnection objects (too-many-files bug hotfix)
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.
* Add reference to Kademlia paper.
Only return all contacts if count is negative.

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

* Tests ported from the drogulus project.
* Disallow adding self in the RoutingTable.
Test and minor refactor findCloseNodes.

* Tests ported from the drogulus project.
Various style fixes.

* Install pythonic names in kbucket and routingtable.
* Add module docstrings.
* Clarify a condition.
* Drop excessive logging.
* Rename some variable.
Remove logging from kbucket.