Fix Phase Syncing

Fixes the problem where syncing phase could be a buffer off:

* Move all updates of current samples and beat distances after all other buffer processing is done.  This prevents one buffer from having values ahead of another
* Move all sync enabling requests into the Engine thread to prevent threading problems where beat distances were updated while the engine was processing.