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.
You may use an enum here. If you use the same enum in the whole cal chain this is a tiny performance win as well, because no need for "+1" eg:  ENABLED DISABLED INVALID