Eventing 2 - Further work

Some further work on eventing.  This is a little experimental, but I think it is a better API. Let me know what you think.

1) The `subscribe` method now returns a `Subscription` object. To unsubscribe, call the `unsubscribe` method on the returned object. You no longer need to keep track of sids.

2) There is no longer a single event_queue. Instead, each subscription has its own queue. Events relevant to that subscription are put onto that queue. Access the queue from `subscription.events.get()`

3) Some XML parsing is done for you when you retrieve an event from the event queue. The `get` and `get_nowait` methods will return a dict with keys which are the evented variables and values which are the values sent by the event.

4) Various other fixes

Things are liable to change, so not ready to commit yet, but please let me have comments

Here is an example, based on some code I use:

```python
try:
    from queue import Empty
except:  # Py2.7
    from Queue import Empty

import soco
from soco.events import event_listener
import logging
logging.basicConfig(level=logging.DEBUG)
# pick a device
device = list(soco.discover())[0]
# Subscribe to ZGT events
sub = device.zoneGroupTopology.subscribe()

# print out the events as they arise
while True:
    try:
        event = sub.events.get(timeout=0.5)
        print event
        print event.sid
        print event.seq

    except Empty:
        pass
    except KeyboardInterrupt:
        sub.unsubscribe()
        event_listener.stop()
        break

```