WIP - Move VCS impls to subpackages and create central Opener/Cloner registries

The API for go-vcs is very messy. This PR fixes it by:

1. Moving VCS implementations (git, gitcmd, hg, hgcmd) to separate subpackages.
1. Handling open/clone operations using a registry that VCS impl packages register opener/cloner funcs in.
1. Removing extraneous types (`HgRepository`, `GitRepository`).

@shurcooL, if you have any feedback, let me know. I don't believe this will break Go-Package-Store. (Sourcegraph would know for sure but our build queue is a bit deep right now. :cry:)