Add snapshot class

This class allows the user to take a snapshot of a given sonos device, then later restore it to that state.

Example usage:
```
device = SoCo('192.168.0.14')
snap = Snapshot(device)
snap.snapshot()

# Do something here that changes what's playing etc.

snap.restore()
```

This file requires the folowing changes: #219 #220 

Some mention of a snapshot class was make in https://github.com/SoCo/SoCo/issues/99#issuecomment-55367164

Also if #223 is changed (Ideally to support adding multiple items to a queue in one go) then the performance of snapshotting the queue may be improved.

I just wrote code like this to get the entire queue.  I feel it would benefit from being a public API method.