Validate that we can construct the dependency chain first,
before any branches are created. This means that aborts in
sanityCheck, or dependency cycles, do not leave the developer on an
empty branch.
It also removes misleading messages of the form "Created and checked
out branch ..." for every dependency in the chain -- those branches
were merely created as intermediate steps, and were silently removed
before the command completed. Finally, this removes a hack where
--nobranch would actually often create branches, due to interactions
with the intermediate branches mentioned above.