Add Eq instance for Either
catch exception thrown by tryLoadLib on Windows

`tryLoadLib` uses `loadLibrary` to load DLL on Windows, which throws
`IOException` upon failure such as file not found. Currently we only
checks whether the return value is `nullPtr` or not.

This commit adds a handler that tries to catch the `IOException` thrown
by `loadLibrary` and returns `nullPtr` instead.
Add tab completion for "induction" in prover
Merge pull request #772 from david-christiansen/either-eq

Add Eq instance for Either
Merge pull request #773 from suhorng/fix/master/catch-windows-tryloadlib-exception

Catch exceptions thrown by tryLoadLib (on Windows)
Merge pull request #774 from david-christiansen/induction-completion

Add tab completion for "induction" in prover
Make note of unapplied unifiation solutions

i.e. when an argument is given explicitly, but can be solved by
unification, make sure that the given argument and the inferred argument
themselves unify. Keep track in the ProofState structure, and unify when
'solve' tactic is applied for the given hole.

Fixes #765
Check for cyclic solutions in unification

Fixes #602
Remove MVar from REPL

Because we don't actually share state...
Check that case does not overspecialise

i.e. if we're inspecting a concrete constructor, make sure the intended
type is a constructor type. This stops typecase sneaking in, and
fixes #156
Disallow explicit types on LHS

To prevent typecase sneaking in.
Cache argument types for building case trees
Linearity checking on LHS of with clauses
Merge remote-tracking branch 'upstream/master' into error-reflection
Add name suggestions to reflection lib

This makes it much easier to define reflected errors, because the
pattern variable names are understandable.