make parsing of the git url more robust

the git remote url doesn't have to contain a user name before the hostname.
For example, when you have a github.com host defined in your ssh config,
ssh will find the username in the ssh config file.

Thus I made the 'user@' part optional when parsing the output of git remote show
and when the URL is detected to be a github.com URL, the 'git@' part is added
when it isn't already there.
First group should not be captured if it is never used.
`s!([\w\-]+\@)?([^:]+):!git://$2/!` should be `s!(?:[\w\-]+\@)?([^:]+):!git://$1/!`