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.
since distance calculation might happen quite a lot, I'd probably define up top:
```
BIT_NODE_ID_LEN = 160
BYTE_NODE_ID_LEN = 20
```

and save ourselves the arithmetic for every query. I'm not sure how smart python is about runtime optimizations, perhaps unnecessary.