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().
I 'd like to see that written as:
```python
import functools  # at the top
...
def _synchronized(func):
    """Decorator for synchronizing access to DHT attributes."""
    @functools.wraps(func)
    def synced_f(self, *args, **kwargs):
        with self._lock:
            return f(self, *args, **kwargs)
    return synced_f
```