first cut at the otterclock.  Won't request after the first batch of yet or
delete.
committing broken code; trying to get the part where it retries multiple requests working.
fix unit tests.
Merge branch 'master' into auto_377_there_otter_be_an_otterclock
fix lint.
fix up the test cases to be a little less clunky..
adding deletion of events after they have been triggered.
Merge branch 'master' into auto_377_there_otter_be_an_otterclock
Merge branch 'master' into auto_377_there_otter_be_an_otterclock
using loopingcall to make this work.
Merge branch 'master' into auto_377_there_otter_be_an_otterclock
Oops.
Merge branch 'master' into auto_377_there_otter_be_an_otterclock
@manishtomar suggested this change to using deferLater instead of callLater so that we can return a deferred to the LoopingCall when we're fully done with processing the batch.
Merge branch 'master' into auto_377_there_otter_be_an_otterclock
fix to unwrap an array.
Merge branch 'master' into auto_377_there_otter_be_an_otterclock
working otter clock

- was storing policy json instead of id in scaling_schedule. fixed
- deleting policy events on policy deletion (this way its scheduled events will not fire)
- added logs in otter clock
    - unique ids for each iteration
    - storing utc datetime based on which events are fetched
- events were not getting deleted after processing if processing resulted in error - fixed
- modified related tests
cleanup - per david
SchedulerService implemented - thanks @dreid

* Scheduler implemented as a Service that is added to main MultiService. This way it gets started and
  stopped by twistd. Accordingly added test and updated docs
* Added scheduler config in config.json
* Modified scheduler tests to reflect service and added docstrings
* Scheduler tests now use twisted's Clock()
* few cleanups like removing unnecessary callbacks for error handling