follow up to #836

I didn't have time to get feedback in before the merge, so here it is in PR form.

* Rather than having to remember to register agents everywhere we create
  instances, the DoRegistration method is for things that need to happen every
  time an agent instance comes to life - regardless if that was by db init or
  from new creation.  Moved RegisterAgent code out of all places and into
  Agent::DoRegistration.

* Fixed bug where Facility class didn't call Agent's DoRegistration method.

* Made [un]registerAgent methods in context private because the Agent class is
  already friends with the context and these methods should only ever be
  called by the kernel.