some cleanups that were missed from #1 (job and event models)
added a JobHandler mixin for defining job handlers

Mix in on your handle class.  It provides the initialize API and
run/init hooks.  Also provides settings and callbacks API.

This includes some extra (and untested) stuff for testing the
handler mixin.  A Runner class which exists to run handlers.  A
test job runner for running handlers in tests.  Finally a bunch
of test helpers for testing job handlers and other stuff.