Allow LatestVersionMatcher to conditionally handle branches.

Originally, LatestVersionMatcher did not respect branches, so would
return the wrong revision and later Ivy would fail with a branch
mismatch exception.

The previous fix changed LatestVersionMatcher to look at askedMrid
and would always return needModuleDescriptor=true if it included
a branch.

This fixed the bug, but meant a module descriptor was always required
if askedMrid had a branch, regardless of whether your pattern included
branch or not.

This restores the fast-path behavior that, if the resolver pattern
includes branch, such that any askedMrid we're passed already
implicitly has the right branch, we can return false and avoid
pulling back the module descriptor.

To do this, we must add a way for the version matcher to ask it's
resolver "hey, did you filter on branch already?"

The interface HasPatternInformation adds this ability, and the
VersionMatcher needModuleDescriptor method now accepts it as
a parameter.