Cleanup
Modularize basic functionality

Instead of hard-coding the webhook ping code, move that into a module.
Serves as the basis for future modularization.
Wrap all route handlers in try/catch

Ensures unhandled exceptions are logged and that the stack trace is
not returned to the caller. Assumes if an exception is thrown that
next() was not invoked.
Arguments are pre-validated

Subscriber modules don't need to validate parameters passed to their
handle method; this is already performed before dispatch.
Clunky logging of subscription disptaches
Add type support to endpoints

Endpoints must have a type; tags are optional.
Add type support to subscriptions
Merge branch 'tags_to_types'

Replaces tags with tags and types, similar to Logstash's system.
Ensure a lack of tags results in an empty array
Add republishing

Allow a subscriber module to generate its own publish events, perhaps
after changing the type.
Add zabbix, hubot modules
Ensure tags, config are optional for subscriptions