Experiment with EventBus as a replacement for callbacks.

* Add a dependency on EventBus, with associated ProGuard changes.

* Replace IServiceVolumeCallback with a PlayerVolume event.

* Adjust BaseActivity and PlayerListActivity to respond to the event.
Fix two NPEs when no players are connected to the server.
Fire an event when the handshake completes.
Create and use an EventBus that's specific to the service.

Instead of using the default EventBus provided by EventBus.getDefault(),
SqueezeService creates its own, and makes it available to clients of
the service through the getEventBus() method.

This ensures that service events are only sent to clients of the service
instead of being received by all-comers, which will probably be useful
later.

This changes the lifecycle of the activity / fragment registration on
the event bus. Instead of using onStart() and onStop() to register,
register in maybeRegisterCallbacks(), and unregister in onPause(),
to mirror when the callbacks are registered.
Delete IServiceVolumeCallback, as it's no longer used.
Replace IServiceConnectionCallback with a ConnectionChanged event.
Replace IServiceMusicChangedCallback with a MusicChanged event.
Replace IServicePlayersCallback with a PlayersChanged event.
Replace IServicePlayerStateCallback with a PlayerStateChanged event.
Replace IServiceCallback with multiple events.
Comment refactor for consistency.
Replace IServiceCurrentPlaylistCallback with PlaylistTracksAdded and
PlaylistTracksDeleted events.
Use equals() instead of == when comparing songs.

Fixes bug where the song was always considered to be different.
Replace IServicePlaylistMaintenanceCallback with events.
Mark fields in events as final.
Update comments to reference the correct events.
Merge branch 'develop' into eventbus

* develop:
  Prepare for release 1.2.0-beta-2.
  Update to Gradle 2.2.1.
  Fix a bug where the UI was not updating when returning to some activities.
  Use equals() instead of == when comparing songs.
  Prepare for release 1.2.0-beta-1.
  Update to the latest version of dependant libraries and tools.
  Fix two NPEs when no players are connected to the server.
  Add "changedSong" to the conditions that trigger onPlayerStateReceived.
  Use BaseActivity.this as the client for volume callbacks.

Conflicts:
	Squeezer/src/main/java/uk/org/ngo/squeezer/NowPlayingFragment.java
	Squeezer/src/main/java/uk/org/ngo/squeezer/framework/BaseActivity.java
	Squeezer/src/main/java/uk/org/ngo/squeezer/service/SqueezeService.java
Remove empty registerCallback() methods.
Replace registerCallback() with a HandshakeComplete event handler.
Remove registerCallback() and unregisterCallback() methods.

Nothing overrides either of these methods. registerCallback() can be
completely removed, the two calls from unregisterCallback() were
moved in to onPause().