Remove the ability to clone shallow

- We discovered fetching a ref that depends on commits which are not
in the repo (because the repo was cloned 'shallow') causes errors.
- This disables the shallow cloning option entirely, and for backward
compatibility it detects if an existing repo is shallow and re-clones
it if so.
Just for reference, an additional benefit to the `self.patch` helper in our BaseUnitTestCase is that we default the "autospec" option to True. This makes our mocks perform additional validation to ensure they have the same api as the objects they're replacing.

That doesn't really apply to this specific test but it was tangentially related and I was feeling type-y. :grin: