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
I'm fine with this approach. I just wanted to clarify that the GUIDs are very much hand in hand with the DHT code. I completely agree that the PeerConnection objects have become unnecessarily complex and synonymous with the identity for the DHT. I would love to see more separation here and I think I can see more of where you are trying to go with this.

If you haven't yet already it might be worth a spin through http://www.bittorrent.org/beps/bep_0005.html to get a better understanding of how the DHT should be looked at. Also the DHT routing code at MaidSafe is a good read, but IMHO might be a little too complex for us right now.