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.
More information runtime error for missing case

Now gives line number and function, returning an error code,
without the ugly assertion failure.
Fix JS code generation

It seems JSError doesn't like the newline.
Fix interactive annoyance in vim

Sometimes if you edit too fast, the file won't reload because there's
only 1 second granularity on modification time! So reload if equal too.
Better typecase check

Only allow matching on polymorphic arguments if they have been refined
to something concrete due to some other argument by the time they're
elaborated.
Better message on IBC load failure