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 `GUIDMixin` out of `node/connection.py::CryptoPeerConnection` and `test/test_kbucket::GUIDMixin`.
* Add `unicode` support. 
* Supply a complete testsuite for the new class.
* Fix relevant documentation.
Right now, there are calls to `GUIDMixin.__eq__` with subtupes of `basestring`. Inserting a `print "It's a string!"` statement in appropriate case inside the `__eq__` reveals that.

I don't know whence these calls originate; I promise to look into it in the future. Can we leave it now as is?