Use Executor for syncing work

Replace SyncService with Executor and make channels compatible with using Executors.

See #51 and #53