Much better link formatting based on feedback from @kballard
Correctly decode entities from messages
Merge pull request #131 from slackhq/better-formatting-removal

Better formatting code
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.
Add some comments on how to use the new listeners
Convert test stubs to @vars

This makes it possible to add more test files later and still get at the
stubs.
Extract test stubs into their own file
Fix some miscellaneous typos in the test descriptions
Expand the test stubs

* Add more information to the stubs.
* Tweak the stubbed functions to behave slightly more like the real ones
  (e.g. test channel name / id before returning).
* Fix the channel name used in some of the tests to match our stub
  channel.
* Attach a real Hubot Brain to the stub robot.
* Call SlackBot.loggedIn before each test, to ensure more of the bot is
  initialized.
Tweak SlackRawMessage to only copy own properties

SlackRawMessage copies its properties from the slack-client Message
object. It should only be copying own properties, though, or it ends up
with functions that Message defines (which it turns out are enumerable).
Add a couple of basic tests for SlackTextMessage

More tests are coming.
Tweak SlackTextMessage, SlackRawMessage to have .rawMessage

Add `rawMessage` property to `SlackTextMessage` that contains the
original message. This is in addition to `rawText` which we're keeping.

Change `SlackRawMessage` to use the same `rawMessage` property instead
of copying all the message properties onto itself.
Add a bunch more message tests
Use Hubot.Message directly with Hubot >= 2.11.0

Hubot 2.11.0 now exports Message directly, so we can stop pulling out
TextMessage's superclass. We still need the workaround when using older
versions of Hubot.