Lock down to GitHub API v3 for future compatibility

Every API request will now declare that it wants v3 by setting
"Accept: application/vnd.github.v3+json".

http://developer.github.com/v3/media/
Remove duplicate cukes
Deprecate converting issue to pull-request

This feature is likely to get dropped from GitHub API in the near
future. The alternative is to simply create a new pull-request and
reference the original issue in the description.
Improve detecting of origin remote and remote branch

In hub lingo, "origin remote" is the remote pointing to the canonical
GitHub project, i.e. where pull requests should be sent. "Remote branch"
is where hub guesses the user has pushed their changes from the current
local branch.

The origin remote can now be called "upstream", "github", or "origin",
in that order of precedence.

The `browse`, `compare`, and especially `pull-request` commands need to
know the remote branch. Previously we relied on git upstream
configuration, but that wasn't enough. This behavior is now only kept if
git "push.default" is set to "upstream" or "tracking".

For "push.default" values "current", "simple" (git 2.0 default), or
"matching" (git 1.x default), we can safely assume that the user
probably pushes to the same-named branches on some remote, and we ignore
upstream configuration.

To find the remote where the user pushed their changes, we search for
the same-named branch on:

1. the remote which points to a GitHub project owned by the current user;
2. "origin", "github", and "upstream" remotes.

When a match is found, it is assumed that the user pushed there and it
is taken as the implicit pull-request head.

Fixes #158, fixes #360, fixes #381
Fix fetching the list of remotes for publishing

It's not guaranteed that every git remote corresponds to a valid GitHub
project.
Enable cloning private repos

Since cloning of private repos over `git:` protocol is not possible,
users were required to manually add the `-p` flag to trigger cloning
over the `ssh:` protocol.

Now, use the GitHub API to obtain information about the repo to be
cloned, and automatically use the `ssh:` protocol if the repo is private
or if the current user has push access to that repo.

Fixes #212, fixes #213
Make a more comprehensive CONTRIBUTING document

Fixes #421
Handle quoted strings in YAML configuration

YAML will typically output plain strings, but if they match a reserved
keyword or are comprised of digits, they will be quoted. For
compatibility with existing configurations, strip single quotes from all
values read, since we only deal with string values for now.
Clarify that curl is not being used anymore

[ci skip]
Fix `ci-status` broken by changes ported from stable branch

Broken by 06999d9
Merge branch 'stable-port'