Logical Device Support

cc/ @bencevans 

Changes:
- Changed [Listener](https://github.com/stephen/node-sonos/blob/logical-devices/lib/events/listener.js#L10) class to think in terms of "handlers" instead of "endpoints." This makes more sense because you might have multiple handlers for a given endpoints' events, so "client" code should think about handlers logically. I don't believe any previous code used these, but it could technically be considered a breaking change (API changed `addService`/`removeService` to be prefixed with `_`.
- Added `LogicalDevice` class. Takes in an array of Sonos devices that can be managed together (i.e. forms a group or stereo pair). This class currently supports group change for volume. The API between a `LogicalDevice` and regular `Sonos` device should be identical. (Commands that are only addressed to the coordinator (e.g. play/pause) are simply passed down to the underlying `Sonos` prototype.
- Added a `volumeListener` class to keep internal state on a `Sonos` object. Used by `LogicalDevice` to do volume changes (but not on other methods).

(Closes #43)
Okay. That's true, I don't know about you but I'd rather keep the callback & eventloop style rather than promises. Your thoughts?