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.
are we sure schedule/cancel will only be called by a single process/thread?