Drop node/contacts. Fix, refactor and test CryptoPeerConnection and friends.

### Motivation:
The contact-handling code inside `node/kbucket.py` is written with the assumption that it handles contacts of type `node/contact.py::Contact`, which override `__eq__`. This is not the case; the `Contact` class is actually unused in the project. It appears the actual contact type is `node/connection.py::CryptoPeerConnection`. The present PR patches this class so that it can be used seamlessly with the current version of `node/kbucket.py`. It also drops the unused class and does some minor refactoring in `test/test_kbucket.py`.

This fix is critical for correct behaviour of the DHT and prevents potential bugs from #608.

### Changelog:
* Drop `node/contact.py` as unused; drop relevant unit tests `test/test_contact.py`.
* Patch `test/test_kbucket.py` to work with any type matching the tentative `GUID` interface.
* Fix and refactor `CryptoPeerConnection` wrt `PeerConnection`:
  * Drop unused `callback` argument in `CryptoPeerConnection::__init__`.
  * Fix misleading default `nickname` argument; properly initialize `nickname` via the parent class.
  * DRY `logger` initialization code; the parent class initializes `logger` via `self`, so that should be OK.
  * Initialize the logger as the last step in `CryproPeerConnection::__init__`.
  * Tag unused attribute `peer_alive` as private, to prevent misuse.
* Write extensive unit tests for `PeerConnection::__init__` and `CryptoPeerConnection::__init__` and `CryptoPeerConnection::__eq__`.
Ok didn't see the previous 42 reference. No, you are correct it's not necessary.