Adding some clean-up / fallback for failures

@gaurave

clone.dart-
Change adds a .git dir clean-up if the remote fetch fails (currently the empty .git folder is left behind if a clone fails).

objectstore.dart-
Changing to getDirectory ensures that an error is thrown if load() is called on a non-Git directory, or if someone has mistakenly added a .git dir (i.e. it will also fail due to no objects / no pack folders.