Abstract GUIDs. Properly support unicode GUIDs.

### Motivation:
PR #686 implements `__eq__` for `node/connection.py::CryptoPeerConnection`. The implementation was borrowed from that of `node/contact.py::Contact`, which was deleted in the said PR. However, the implementation was not correct: it mishandled the case where `unicode` GUIDs are used. This PR fixes that. It also abstracts the GUID out of `CryptoPeerConnection` into a separate file.
  
### Changelog:
* Factor `AbstractGUID` out of `node/connection.py::CryptoPeerConnection` and `test/test_kbucket::AbstractGUID`.
* Add `unicode` support. 
* Supply a complete testsuite for the new class.
* Fix relevant documentation
It is meant to isolate the DHT implementation (especially `node/kbucket.py`) from the implementation of the class handling the identity. I don't want the DHT to access anything about the class it stores. Right now there are traces `if contact.guid == something:` code. This feels wrong: the identity class should know how to compare itself to other objects.

Once you accept that, then extending equality to strings is just a matter of conforming to the current documentation. I certainly don't like it, and I believe it should be removed. I 've included the first step in this PR: No bare strings are stored in the `kbucket`; they are converted to an `AbstractGUID` first. But I am not sure I grasp all the code that needs to be changed in order to have comparisons only between `AbstractGUID`s.