scheduler schema change using buckets - AUTO-600 (ready for review)

Scheduled events are stored in multiple buckets. Each bucket contains time-ordered set of events. When otter is started, the buckets are partitioned among each of the api nodes from zookeeper. During each tick, the scheduler fetches (and deletes) events to occur now and earlier and processes them. [scheduler.py](https://github.com/rackerlabs/otter/blob/scheduler_schema_change/otter/scheduler.py) is heavily rewritten to make the methods more independent, modular and testable. Ergo [test_scheduler.py](https://github.com/rackerlabs/otter/blob/scheduler_schema_change/otter/test/test_scheduler.py) is also complete rewrite. Kindly go through them as new code. They are complete. For reference, you can look at [Kazoo partitioning recipe](http://kazoo.readthedocs.org/en/latest/api/recipe/partitioner.html) and [txkazoo implementation](https://github.com/rackerlabs/txkazoo). 

Model change: policy table has version column that gets updated whenever policy is updated. The same version is stored along with the event. Scheduler ensures that version matches before executing event. This way, we don't bother deleting whenever a policy is deleted or updated. When a policy is updated, the version is changed and a new event with new version is added. The old event when picked up will not get executed since its respective policy (with that version) is not found. Added `version=None` to `get_policy` that checks the version before returning. Refactored test_cass_models into seperate class for testing add_policy and update_policy as part of the change. 

Please ignore below discussion. This was before the bucket design was decided.

**TODO:**
- [x] tap/api.py tests completed
- [x] In another PR: Write more tests for txkazoo, put it in forked copy and upload it in local pypi. Accordingly put entry in requirements.txt. 
- [x] config.json changes in this PR and related autoscaling-chef changes