SI-7985 Allow qualified type argument in patterns

We were considering the lower case `s` in `case _: Array[scala.Int]`
as a sign that we were dealing with a type variable pattern.

Now, we only do this if a lookahead confirms the absence of a the `.`
SI-7985 Allow projection of lower-cased prefix as pattern type arg

As per the last commit, tighten up the interpretation of a lower
cased identifier meaning that we're looking at a type variable.
SI-7985 Refactor parsing of pattern type args

Just parse as though it is a type, and post process to
add the Bind if it turns out to be a type variable.
Merge pull request #3162 from retronym/ticket/7985

SI-7985 Allow qualified type argument in patterns