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.
The good news is that the async excutor's `wait(results, num=None, timeout=None)` is a wrapper around `gevent.wait(objects=None, timeout=None, count=None)` which specifies

> If objects is provided, it should be an iterable containg objects implementing wait protocol (rawlink() and unlink() methods)

TL;DR: We can send it a `set`