Refactor engine reconciler and add tests!

This is currently rebased on https://github.com/coreos/fleet/pull/694