create plugins: move non-core functionality into plugins

plugins are loaded at initialization time and register event
handlers for named hooks