Backport cukes from 1.12-stable branch
URI-encode most characters in branch names for `compare` command

It's especially important to encode the `#` character, because it would
get interpreted as a URI fragment identifier. However, we let
`url.QueryEscape` encode any other unsafe characters, except allowing
special characters like `/!:^~` to appear raw. Most of these characters
aren't allowed in branch names anyway, but they can appear as git
revision expressions such as `feature^` or `mislav:feature~3`.
Allow creating "origin" remote in `create` even if another remote exists
Auto-private URLs in `remote add` when matching your own repos

`hub remote add origin` and `hub remote add MY-USERNAME` will now act as
if `-p` was given and automatically assign private (SSH) URLs instead of
public ones, because the fact that these are your repos means you have
write access.
Merge pull request #747 from github/backport-cukes-1.12-stable

Backport latest cukes from 1.12-stable branch