Fix deep path issues

The various VCS types behave differently when you clone to paths whose intermediate directories do not exist. This PR attempts to consolidate that by making everything follow the Git convention to create intermediate paths.

There's a similar problem for `anyvcs.create()` which I've gone ahead and fixed in this PR.