Moving and rehashing tests for observeChanges.

Now that the tests exist on both client and server, they want to be
able to be asynchronous.  Sadly, the current idiom to do this is
somewhat lacking, so I kind of wrote another prototype idiom.

In this world, we use a callback expecter that has been woven in
to a fiber.  Calling a callback, or timeouts, can wake up the fiber
and make it check if it is time to expect a thing.