DHT Locking

Grab a RLock object on running any method of a DHT object. Supposed to fix #801.

The lock is an RLock, so nested locks don't cause deadlocks.

The lock object had to be made public, since in connection.py, inCryptoPeerConnection.cb()  there is a piece of code that works with dht.activePeers().
As you noted, this should be factored into a function, moved into `dht.py`, decorated with `@synchronized`  and called here. Can you do that for us?