Fix parser for :def REPL command
Remove bad Applicative constraints from neweffects
Better treatment of unbound implicits

Now uses the elaborator to generate any necessary extra bindings, using
the same machinery as pattern match elaboration. The end result is that
you no longer need 'using' in a lot of cases (it is still useful if you
want to give explicit types, of course). e.g. this now works as it
stands:

  data Elem : a -> Vect n a -> Type where
       Here : Elem x (x :: xs)
       There : Elem x xs -> Elem x (y :: xs)

  isElem : DecEq a => (x : a) -> (xs : _) -> Maybe (Elem x xs)

This should also reduce the number of weird "no such variable" errors
signfificantly. In particular, it fixes #1354
Type class resolution fix

Check whether any errors introduced by a match are unrecoverable, rather
than merely checking if any more errors are introduced. Otherwise, in
some circumstances (where other problems are resolved by the match) we
might get a type class resolved where it shouldn't be, leading to
mysterious errors later.

Fixes #1365
Merge pull request #1363 from bmsherman/parseDef

Fix parser for :def REPL command
Merge pull request #1364 from puffnfresh/neweffects-bad-constraints

Remove bad Applicative constraints from neweffects
Remove some needless 'using' blocks

since the elaborator is now cleverer
No need for 'using' in HVect
Ensure erasure happens under 'force'

Fixes #1367
I'm not yet convinced there isn't still potentially a similar problem
under other forms of ProjCase, but since these only arise in unusual
circumstances at the moment there isn't a problem *yet*!