Simplify engine, removing event handlers

The current approach to driving cluster-level decisions using event handlers without a great level of coordination is making fleet incredibly hard to operate in a real environment. This patch removes all of the engine's event handlers and simply re-runs the CheckForWork loop every 5s. It also uses the simple TTL'd locking mechanism to prevent multiple engines from running at once.

This still has some kinks to work out, but it basically works. Scheduling time has slowed down dramatically, since the user has to wait on the reconciliation loop to run twice, so maybe that's a dealbreaker?
holy canoli, dat for loop