engine/cluster: add proper job tracking, remove offers

This builds on #649: 8eaa869b3933 and 8bea5d1f6877

Offers are gone. All scheduling is direct and the engine is responsible for
making every decision.  This does not yet deal with Conflicts/Peers; most of
the parts are in place but the engine/cluster interaction needs to be wired up
to cleanly deal with those situations.

Also requires a couple of other small tests.

Obviously not ready to go to master, but feedback desirable.