Major refactor of EngineSync / RateControl / BpmControl for master sync.

* Add SyncControl, an EngineControl that manages syncing for decks.
* Remove most BpmControl / RateControl logic dealing with sync.
* Add Syncable interface and make InternalClock and SyncControl implement it.
* Remove tracking the master with its group string -- instead use Syncable
  pointer to decide what is master.
* Treat InternalClock the same as SyncControls in master / follower logic.
* Add a SyncableListener interface for EngineSync (eventually use that instead
  of EngineSync to prevent future developers from calling methods on EngineSync
  we do not allow).
* Reduce risks of signal infinite loops by using a request/response setup where
  EngineSync makes all decisions.
* Some minor hacks were needed -- I hope to remove them.
* Tests pass but I had to change something I thought was a bug in the
  test. Please review, @owilliams.
* Left some tracing qDebugs in. These aren't too spammy and are quite helpful
  for debugging. I think we should leave them on during alpha testing.
* SyncControl gets its EngineChannel via its constructor instead of EngineSync
  dealing with setting up the EngineChannel of its syncables.