Use GitHub's `archive` URL for SHA1

To compensate for
https://github.com/mxcl/homebrew/commit/174acd649c19dbc83f34a6a9e95bdc137b1a2a1b,
we need to use the archive URL, rather than the tarball one so that we
calculate the correct SHA1 when generating the Homebrew formula.
Naming consistency in README file
Ensure git is the latest version on Travis

Works around travis-ci/travis-ci#1710
Cache bundle results on Travis to S3

Hopefully speeds up builds
Add more docs to dependencies-caching scripts

[ci skip]
Fix usage synopsis for `compare`

All parameters are optional.

Fixes #290 [ci skip]
Merge pull request #378 from arturoherrero/readme-consistency

Naming consistency in README file

[ci skip]
Merge pull request #377 from stevenharman/use_archive_in_homebrew_task

Use GitHub's `archive` URL for SHA1

[ci skip]
Nuke HISTORY file

I might keep maintaining it in the "1.10" branch but I don't intend to
keep it up to date forever. It's a pain and I always forget it.

Use GitHub Release notes or git log to get a list of changes between hub
releases.

[ci skip]
Banish the concept of "api_token" from Config

It doesn't seem it was ever used. I probably kept it by mistake after
transitioning to OAuth.
Rewrite API auth to allow Enterprise email login

API authentication and persisting of credentials in Config was
convoluted and inflexible, and it wasn't possible to log in with
different credentials than your GitHub screen name. Since Enterprise
supports different authentication schemes, it's important to allow
emails for login as well (or any string for that matter) and retrieve
the user's screen name after successful authentication.

This also improves handling special characters in Basic Auth usernames
and passwords.

Fixes #407
Fix 2FA for users that receive code via SMS

hub initially tries to fetch user's existing OAuth token for hub if it
exists, and will prompt the user for a 2FA code. However those who
receive it via SMS would never get the code since a GET to GitHub's
Authorizations API purposely doesn't trigger an SMS. There's some
discussion as to whether this is an API bug for not, but in the
meantime, make a dummy POST request for the sole reason of triggering
the SMS.

Fixes #412, closes #435, closes #445
Remove HISTORY file from gemspec

[ci skip]
Enable `am` applying patches from private repos

Fetch the patch using GitHub's API instead of curl.

Fixes #397
Fix WebMock reset phase in Minitest::Test

Without it, requests stubs from one test could influence the outcome of
another test.
Explicitly declare we're using GitHub API v3 when fetching patches

This shields us from future changes to GitHub's API
Rewrite `hub am` to get rid of usage of curl altogether

With patches now fetched from GitHub's API, it was awkward to keep
fetching raw gists using curl. This makes it so patches from gists are
fetched using the API as well.
Merge branch 'private-patch'
Merge branch 'auth-fix-master'
Don't test the case when a gist contains multiple blobs

When GitHub's gist API payload gets deserialized in Ruby, the file list
gets converted to a hash. Since hashes are unsorted in Ruby 1.8, we
can't predict which file will get picked as the "first file". Therefore,
avoid making such a test.

This means that applying patches from gists that have multiple files in
them will have unpredictable results on Ruby 1.8.