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

Currently a WIP. At the time of this writing, there have been a ton of code changes without any serious testing.
Does this really warrant a WARNING level?