Schema to store scheduled events in the future.
Merge branch 'master' into auto-300-database-schema-like-xerxes
updated schema.
psuedo code for scale down
scale down impl UNTESTED (code flow review needed)

- structured code to impl cancelling pending jobs
- deleting active servers implementation should work
- active servers are moved to pending before their deletion is started and removed from pending after
they get deleted

TODO:
- TESTS!!
- logs
- docstrings
- pending jobs cancellation
ying's discussion modifications

- these are changes after pairing with ying (a large simplicifcation from previous code)
- added tests
- pending jobs cancellation is implemented
- launch_server_v1.delete_server takes server id instead of whole server dict
addressed review comments

- Removed DeleteServerException and related deferred and tests code
- instead logging success and error in supervisor itself
- Using _id instead of id
- elif instead of if as per david's suggesstion
added GroupState.remove_active tests
corrected docstring
tests for deleting pending jobs

added test when pending job is removed and execute_delete_server is called after it has built
Merge branch 'master' into auto-300-database-schema-like-xerxes
Adding fake-mock tests and interfaces to demonstrate how the storage interface for scheduled events will look.
updated tests with supervisor's previous changes

and some changes based on ying's comments
Merge branch 'master' into auto-300-database-schema-like-xerxes
Better log message for calculate delta
Upgrade to jsonschema 2.0.  Explicitly specifying the v3 validator.
Improving unit tests slightly, lint.
updates based on ying's comments
minor cleanup -- use correct idiomatic python.
Merge branch 'master' into scale_down

Conflicts:
	otter/worker/launch_server_v1.py

conflicts due to ying's commit on wrap_error, made change to allow that