Update the UI when player states change, not players.

As the service is tracking players from the time it connects to the
server there is no need to re-fetch the list of players in this
activity.

Instead, use the service's current list of players, and rely on player
state change notifications to update the UI.

Refactor some method names and variables to make more sense.
Disable collapsing each player group expandable list view.
Add @Nullable annotations to methods that handle the active player.

The active player may legitimately be null -- for example, when there
are no players connected to the server.
Fix bugs with player tracking.

- changeActivePlayer() now handles the case where the active player is
  now null -- for example, if there are no players connected to the
  server.

- Unsubscribe from status updates when refreshing the list of players.
Ensure players with no syncmaster return null, rather than "".

Add @Nullable annotations to getSyncMaster() and setSyncMaster().
Refactor and simplify player group management.

- Move the player group creation code in to PlayerListActivity. This
  sets the way for future work to move players between groups, which
  will be managed by the activity.

- Simplify the code that determines player groups, with the additional
  side effect of making it correct. The previous code had problems with
  players that were synced to an un-connected master (which can happen).
Support managing player sync groups.

- Add a context menu entry for each player to manage its sync groups,
  initially disabled.

- Enable the context menu entry if more than one player is connected.

- Extend the service to support the commands for syncing two players
  together, and completely unsyncing a player.

- Provide a dialog that allows the user to select from the available
  sync groups, or break synchronisation, when selected from the context
  menu.