Add commit formatting (optional oneline and gitio reduction)

Also add a few GitHub API wrappers, to mirror gh.branches.  To
distinguish between the API wrappers and the formatter, we use the
presence of a callback in the initial call.  So:

  gh.commits(repo, commit, cb)

takes a repo name, commit hash, and callback; fetches a commit from
GitHub; and calls the callback on the returned commit.  On the other
hand,

  gh.commits().format(commit, cb)

takes a commit object (as returned from GitHub) and callback, and
calls the callback on the formatted commit.

The options formatting depends on several options:

* gitio (set from HUBOT_GITIO) toggles git.io URL shortening
* oneline (set from HUBOT_COMMIT_ONELINE) toggles message reduction to
  just the summary line.

The bulk of the logic was ported from hubot-scripts [1,2], but I've
focused on using commit.html_url instead of commit.url [3] to avoid
the regular expression manipulations used by the hubot-scripts code.

[1]: https://github.com/github/hubot-scripts/blob/v2.5.14/src/scripts/github-commit-link.coffee
[2]: https://github.com/github/hubot-scripts/blob/v2.5.14/src/scripts/github-commits.coffee
[3]: https://developer.github.com/v3/repos/commits/#get-a-single-commit