Restructured pikelet init, split jabber pikelet in two

It should now be possible to run more than one
component per pikelet, and to catch exceptions in
each one without interrupting other parts of the
running application.

Still TODO:
* fix pikelet config reloading (parts stubbed out for the moment)
* work out correct behaviour for exception handling
* implement pending tests
* test running code more widely, to check that
  these structural changes haven't broken anything