Pull the scheduler out of client and in to a mixin

Hopefully I didn't break anything; tested with rejoin and lag mixins and they
seemed to still work correctly.  Closes #12 if I did it right.