Added an :unlet/:undefine command.

  Idris> :let nat : Nat; nat = 6; hands = S nat; feet = S hands
  Idris> :undefine
  Idris> hands -- error

  Alternately:
  Idris> :let nat : Nat; nat = 6; hands = S nat; feet = S hands
  Idris> :undefine nat feet
  Idris> hands
  7
  Idris> feet -- error
Using ASTUtils instead of writing things out the long way
Merge branch 'master' into repl-definitions
Supporting some more declaration types.

They're still not all ready though. Syntax, infix, and instance
declarations still don't work.
REPL class definitions should now be marked as repl-defined
Merge branch 'master' into repl-definitions

Conflicts:
	src/Idris/REPLParser.hs
Adding Alyssa Carter to CONTRIBUTORS
Make proof arguments to list functions implicit

This makes code much cleaner.  Fixes #1318.
Use a slightly different pretty printer for PDecls
Fixity declarations work in the repl now.
Instance declarations are working now.

It would be a good idea to rewrite `fixClauses` though.
Removing an obsolete case
Don't show irrelevant MNs in prover

Previously, proof steps like applyTactic would introduce MNs to the
proof state, with names like {scriptVar231}. This change hides those, as
the user cannot type them anyway.

If they are used in a later assumption, then they will be shown anyway.
Lift out proof term into a separate module

This should make it easier to experiment with alternative (hopefully
more efficient) representations
Merge branch 'master' of github.com:idris-lang/Idris-dev
Merge branch 'master' into repl-definitions

Conflicts:
	src/Idris/REPL.hs
Added :let and :undefine to the repl help
Changed :undefine to undefine the transitive closure of reachable names
No need to check whether something referencing a repl name is repl-defined
Merge pull request #1450 from david-christiansen/dont-show-mn-in-proof

Don't show irrelevant MNs in prover