Skip tests that depend on system deps (hg|bzr|svn|..) that are missing.

Currently many tests will fail if you don't have certain tools on your system such as hg, git, bzr, and subversion. The failure messages when this happens do not outrightly state this, making it very hard to understand.

This change adds a decorator for tests the specify their system dependencies so they may be skipped if one or more of their dependencies are not found. The decorator is memoized and runs test commands (eg: "git -v") to determine if a dependency is there.

This is my first contribution to PIP, so any and all feedback is welcome.