feat(reply): implement interface to simplify plugin replies

Reply Interface provides 3 methods:

- reply(message) sends a message to the source (either a channel, or
    a privmsg query)

- toChannel(message, recipient) sends a message to a named channel, if
    one is available, regardless of the source of the message being
    replied to. A specific recipient may be pinged if supplied.

- toUser(message) sends a privmsg to a user, regardless of the source of
    the message.