Improve detecting of origin remote and remote 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
guess where was the current branch pushed to. Previously we relied on
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 branch on the remote, and we ignore upstream
configuration. What then remains is detecting which remote did the user
push the current branch to.

We search the "<USERNAME>", "origin", "github", and "upstream" remotes
in order to find the first that has the branch named the same as the
current brach. When a match is found, it is assumed that the user pushed
there and it is taken as the implicit pull-request head.