*: split out reconciler behaviour into pkg

Since the agent and the engine now share identical code for their
Reconcilers - and the main loop is quite critical - I think it's worth
sharing the code and giving its own set of tests.