github-commit-link: Loosen regexp to match 7-through-40-char hashes

Instead of 7-or-40-char hashes (e.g. not 8-character hashes).  The
{m,n} syntax is part of POSIX's basic regular expressions, although
POSIX uses \{m,n\} [1].  It looks like CoffeeScript also supports this
range syntax [2]:

  | \.{2,3}           # range or splat

but I couldn't find a clear regexp specification while skimming the
CoffeeScript docs.

[1]: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_06
[2]: http://coffeescript.org/#regexes
github-commit-link: Add support for repo@<SHA> and user/repo@<SHA>

Based on similar parsing in github-issue-link.coffee.  The main change
in the logic is that the initial .* is now the non-greedy .*?, so it
doesn't gobble up the repo-part of the regexp [1].  The user/repo
portion is [^\s@]+, which matches one or more characters that are
neither whitespace [2] nor @.

The non-capturing (?:...) block [3] around the optional repo@ or
user/repo@ qualifier allows us to group the qualifier with its @, even
though we only need the repo or user/repo (without the @) in our
internal logic.

I use CoffeeScript's block regular expressions to comment the regexp
[4], and CoffeeScript's existential operator '?' to check if
'msg.match[1]' is defined [5].

I also document the fact that lines matching 'commit/' are ignored.

[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-questionmark
[2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-white-space
[3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-non-capturing-parentheses
[4]: http://coffeescript.org/#regexes
[5]: http://coffeescript.org/#operators
github-commit-link: Only show the first line of the commit

This is traditionally the message summary.  From Git's own docs [1]:

> The first line of the commit message should be a short description
> (50 characters is the soft limit, see DISCUSSION in git-commit(1)),
> and should skip the full stop.

I sometimes write long, detailed commit messages (like this one), and
there's no need to spam the channel with all of this motivational
background.  The summary line should be sufficient context there, and
folks looking for more information can follow the URL (which I've
moved to it's own line).

[1]: https://github.com/git/git/blob/v1.9.0/Documentation/SubmittingPatches#L89
Eval script now generates proper script

The eval script sent the name of the language at the end of the hashbang,
not the command as it seems like it should.
Don't send an array
Deprecate tell.coffee -- it is a package of its own now

Upgrade instructions at
https://github.com/lorenzhs/hubot-tell/blob/master/UPGRADING.md
github-commits: Don't parse req.body (it's already an object)

Avoid:

  github-commits error: SyntaxError: Unexpected token u. Payload: undefined

because req.body is already parsed by the time github-commits sees it.
The original github-commits code was added in 6e7ce2a (notify in chat
when a new commit is pushed, 2012-08-15), but Hubot added the
bodyParser middleware in 4f4c8c7 (Use bodyParser middleware to parse
POST bodys [sic], 2011-12-24), so I'm not sure how this ever worked.
From the express docs for req.body [1]:

  This property is an object containing the parsed request body. This
  feature is provided by the bodyParser() middleware, though other
  body parsing middleware may follow this convention as well. This
  property defaults to {} when bodyParser() is used.

Besides removing the parsing, I've renamed the generic 'payload' to
the more specific 'push' for most of the script body, because
'req.body' is already a generic identifier, and I want to keep the
parsed variable isolated from future changes to the calling API.

[1]: http://expressjs.com/3x/api.html#req.body
Add spaces before and after the URL.
Script deprecated. Provide warning and fail fast.
Remove the dependency to gitio

I just had a hard time debugging this, with removing that dependency it is way more stable then before.
better logging to support custom prefix
better English
Added South Park Bank Teller and Morpheus What if I Told You.
Fix error in github-pull-request-notifier when body is empty.

When someone submits a pull request without a message the JSON
document contains `null` for `body`. The notifier script was
trying to call `match` on `body` to extract the list of user
mentions. That would fail when it was `null`, resulting in:

    Whoa, I got an error: TypeError: Cannot call method 'match' of null

This changes it to use the existential access operator, so
when body is `null` the mention list is `undefined`.
Removed 404 images and added replacements to beerme.
Change description to read beer advocate script is broken rather than deprecated.
Merge pull request #1429 from ircubic/eval-use-command

Eval script sending wrong query
Version bump to 2.5.14
Merge pull request #1431 from lorenzhs/deprecate-tell

Deprecate tell.coffee -- it is a package of its own now
Merge pull request #1432 from wking/github-commits-body-json

github-commits: Don't parse req.body (it's already an object)