Scheduler

For the first step in building precompute functionality into Jia, this pull request introduces a general purpose task scheduler. See [jia/scheduler/README](https://github.com/Locu/kronos/blob/scheduler/jia/scheduler/README.md) for a sample.
`_schedule` and `_cancel` are called only by the loop thread. `schedule` and `cancel` can be called by anybody.