Fix bug in scoping rules for pattern matches

If a name appears in argument position which is also a constructor
name, it should be pattern-bound unless there is a constructor which
has zero explicit arguments.