Move _SynchronousQueue into another file

This commit does not build but exists so that the next commit shows
diffs better.
Rename _SynchronousQueue to _UnyieldingQueue

Allow server uses of LocalCollection to prefer _UnyieldingQueue. This
will mean that, as long as their observeChanges callbacks do not yield,
calls to insert/update/remove will not yield either.
checkpoint
checkpoint.  question is... can we ensure that if

no queued tasks yield, then drain() will also not yield?