Offer storage

A few goals, so far, for the offer_storage branch:

* resolve offer greed -- #70
* refactor offer storage into its own set of interfaces, of which the scheduler is a client
* refactor scheduler.go to be more cohesive (pull things out that belong in separate source files)
* initial set of unit tests for offer management
* clarify/refactor pod-task state management

[[EDIT]] Currently stable. Continuous, small-scale load testing in the cloud looks ok.