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.
Remove option for EngineSync::activateMaster() to fail.

EngineSync::activateMaster() never actually fails (unless the programmer
accidentally passes a NULL value) so remove all the logic that checks if it
failed. This simplifies EngineSync a fair bit.
Ignore beat distance changes that don't from the master.
Silence noisy debug.
Silence more noisy debugs.
Merge pull request #119 from rryan/master_sync

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