Port latest batch of cukes from master to gh

:warning: This is my work in progress; some cukes still fail

/cc @jingweno
I agree `git.ParseURL` is a better place for replacing hosts since this is related to the `git` not so much to `github` (I have divided them into two packages). Regarding to caching the ssh configs, we could do that in a `init` block in `git/url.go` as part of the [package initialization](http://golang.org/ref/spec#Package_initialization):

```go
var SshConfigs map[string]string
func init() {
  SshConfigs = readSshConfigs()
}
```