Agent Reconciler

I still need to get the AgentReconciler tested, but this is where I want to take the agent package. All feedback welcome!
AFAICT this is now the only place where the cache is locked, which makes it a bit pointless (because you're not even mutating the cache within it).

Were you intending to remove the locking entirely? (Since it's likely no longer necessary with the reconciler model). Or have I missed something?