rework all the plugins for the new config branch

* first, rework config a big more

It's certainly not in its final form, but not we've got a top-level
space for global things like the TDP configuration and other things,
and then observer config all in its own namespace.  Observers are
now set up by name, which is also used, by default, as the short
from of the observer's class name.

* make observer config per-object, not global

In other words, the observers now get config during initialization,
rather than from global name-based data.  This means you can
now have two GitHub observers with different configuration.  (Well,
in theory.  In practice, we will need one more commit, to follow.
make observer name and class separable