WIP Almost complete refactoring and unit testing of routingtable. Minor refactoring of kbucket.

Very WIP. I will describe tomorrow; really tired now.

### Bugs found:
* Many operations are potentially thread-unsafe.
* The `replacement_cache` isn't synchronized once a `KBucket` is split.
I agree. I believe the `market_id` was inserted there to distinguish `RoutingTables` when multiple markets are used. I wish Python had something of Erlang's [make_ref](http://www.erlang.org/doc/man/erlang.html#make_ref-0).