cache-tree: propagate invalidation up when punting

We punt from repairing the cache-tree during a branch switching if
it involves having to create a new tree object that does not yet
exist in the object store.  "mkdir dir && >dir/file && git add dir"
followed by "git checkout" is one example, when a tree that records
the state of such "dir/" is not in the object store.

However, after discovering that we do not have a tree object that
records the state of "dir/", we failed to propagate the fact up the
callchain to stop the code to attempt populating the level that has
"dir/" as its immediate subdirectory.  This led the caller detect
and report a non-existent error.  The end result was the same and
we avoided stuffing a non-existent tree to the cache-tree, but we
shouldn't have issued an alarming error message to the user.

Signed-off-by: Junio C Hamano <gitster@pobox.com>