Refactor routingtable and kbucket (part 2)

### Motivation
Further clean and test the `routingtable.py` module. Do some of the work outlined in #730.

### Changelog
* Delegate splitting to the `KBucket`. This allows better encapsulation, and, you guessed it, better tests.
* Create and test `MemKBucket` class, representing a `KBucket` with a replacement cache.
* Protect access to a `KBucket` via a recursive lock; it is now a thread-safe object.
* Drop `TreeRoutingTable` in favour of `OptimizedTreeRoutingTable`. The latter uses `MemKBucket`s and can cache contacts.
* Fix a bug in `findCloseNodes`.
* Push test coverage for `OptimizedRoutingTable` to 100%, by porting tests from the [drogulus](https://github.com/ntoll/drogulus/tree/master/tests) project.
* Changed naming conventions to follow the Google Style guide.
* Removed logging from `kbucket` classes.

### Note
* The diff is large, but more than half of it are tests. Don't be scared!