Listener Middleware

Builds on #801 (57b722022807b9a5befaafcab2442ad3a03d455b) to allow injecting arbitrary code between the Listener match and execute steps. Like in Express, middleware can interrupt the response process, preventing the Listener callback from ever being executed. Middleware can perform operations both on the way towards the Listener callback (before callback execution) and on the way away from the Listener callback (after callback execution/middleware interrupt).

As a side effect, listeners are now executed asynchronously. Behavior around message.done should remain the same (process until message.done is true).

Example usage (imposes authorization policy on all scripts): https://github.com/michaelansel/hubot-rbac/blob/master/src/rbac.coffee
I'm continuing to work on [hubot-rbac](michaelansel/hubot-rbac) and hoping to put up a blog post about securing chatops when we merge this PR. If we get to the point we are ready to merge the PR and hubot-rbac isn't yet in a good enough state, I'll pull out the reference until it is.

Also, if you're interested in the RBAC framework, I'd love some feedback on the design (initial documentation going up soon).