Refactor to use Subscription objects
Provide each subscription with its own queue

--HG--
extra : amend_source : c13baa7418c3031d0ebbc66d4b64b9ac2fd4501a
Event queues now parse XML
Some pylint fixes
resolving merge conflicts
Merging with master
Small fixes
*%@^£&^ pylint
Using weakrefs for mapping
Allow for custom queues to be passed to subscribe
Prevent resubscription.
Allow access to an event's raw xml
Start of services caching code

--HG--
extra : source : 1a69daf0703d54af216a3c8fab4e7768e302516b
Correct a few typos
Preparation for cache invalidation on events
Moving cache to its own class
Moving and adding to the cache tests

--HG--
extra : histedit_source : bb237c85fb80e80325b1599e71cf8ff00bc92da8%2C9dd5d4fdcc21e737aac1bc3ef86bbc1d96a6f02b
Py3 fix
Adds uid property and some topology code

Closes #120
Simplifying some code involving uids