Add mercurial repository support.

Unit tests are not coded for the moment, I would like to discuss if a tiny mercurial repo should be embedded in source tree or remotely on bitbucket or others.
the `USABLE` is only used by EB, but what if someone creates their own `GitRepository` instance and calls `setup_repo`? You want to make sure things don't go down hard...