Create new Message types for slack messages

Regular text messages now use a TextMessage subclass called
SlackTextMessage, which includes both the parsed text (as `text`) and
the unparsed text (as `rawText`).

Other messages that used to be ignored are now received as either
SlackRawMessage or SlackBotMessage. These do not descend from
TextMessage so they won't be seen by normal `hear` or `respond`
listeners.

A few new Listener classes were created, SlackRawListener and
SlackBotListener, to make it slightly easier to write code tailored for
these new message types.

This PR is based on #131.