Reduce Listener classes to a single class
Update callback call to override context

This allows scripts to do something like the following:

  robot.respond /hello/i , ->
    @reply 'Hello!'

Instead of:

  robot.respond /hello/i, (msg) ->
    msg.reply 'Hello'

All the functions and properties on the old argument will be available on 'this'
in the callback. The old method is still supported.