Make pattern matching consistent in lambda/let

Fixes #1797. We may still need to revisit the rules - they are now
consistent, but may be needlessly complicated. Specifically, if a name
occurs in a pattern and it's not applied to anything, it's treated as
a variable if it isn't a zero argument constructor, otherwise it's
treated as that constructor.

It feels like it would simplify matters if we simply required that
constructors began with a capital (unless they're an infix constructor
in which case the problem doesn't arise) and variables bound in patterns
began with a lower case letter. This is a convention that pretty much
all Idris code uses anyway.