Atomic schedule

Here is a possible fix for #437.  It atomizes the `schedule=` method so the clear_schedules and set_schedule are all in one pipeline.
Because we're using the same redis connection for all the threads, we're actually bound on the `Redis#synchronize` mutex here and not testing the actual cross-process concurrency (which would also explain why `Redis#pipelined` was causing this test to succeed). Maybe we need to fork to test this one?