Skip loading plugins that fail to import unless specified.
Add a basic event hook system for plugins to use.

This allows decoupled registration of interest for plugins.
plugins: Ensure load_controllers is called in paster shell/run as well.

load_controllers is the safe place to do imports of things that rely on
`g` et al being in the correct state. It was not being called in paster
shell or run which meant that any hooks defined in a module that relies
on `g` at module scope (e.g. things importing model or controller code)
would not be connected in those contexts.
Thing: Use a hook for on_thing_commit.
Add some request-related global hooks.
js_config: Add a hook for mutating js_config.
Add hook for Comment._gild().
Add comment.new hook.
Add hook to Printable.add_props.
Plugins: make on_load take "g" so it can add stuff to globals.