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 two options, as discussed in the
Readme:

* 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
adjusted the URL munging.  When it's set [3], I leave commit.html_url
alone.  For the other endpoints [4,5], I try to parse the API URL and
convert it in a single pass.  I don't have access to an enterprise
instance for testing [6], but I'm assuming the API URLs look like:

  :apiRoot/api/:apiVersion/repos/:owner/:repo/commits/:sha
  https://yourdomain.com/api/v3/repos/:owner/:repo/commits/:sha

and the HTML URLs looks like:

  :apiRoot/repos/:owner/:repo/commit/:sha
  https://yourdomain.com/repos/:owner/:repo/commit/:sha

[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
[4]: https://developer.github.com/v3/git/commits/#get-a-commit
[5]: https://developer.github.com/v3/activity/events/types/#pushevent
[6]: https://developer.github.com/v3/#schema