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.
What do you think about a check similar to this? Where we check that each key has the expected 160 bit length (20 bytes)

```
if len(hex_key1) != NODE_ID_LEN/8:
    raise ValueError("invalid key (1) length", hex_key1)

if len(hex_key2) != NODE_ID_LEN/8:
    raise ValueError("invalid key (2) length", hex_key2)
```

as it is I'm afraid that 2 keys with the same invalid length would be then considered for XOR distance calculation.