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.
what happens if you call cancel twice with the same id?