Handle something that isn't a branch being specified in target_branch.
It's possible to create a merge directive where the target_branch isn't a branch by the time that it gets to be merged, either because it uses a local path not on the system where it is being merged, or the branch has been deleted.
If this is the case and the target_branch needs to be consulted to retrieve missing revisions then a NotBranchError was raised, which was quite confusing. This provides a more precise error in that case.