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
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
utility to listen on any port, returning the port number and the socket
provide a new option, --ideslave-socket, for an ideslave listening on a socket
provide a Handle for IdeSlave, used to read from and write to (instead of hardcoded stdin/stdout)
also send protocol-version message when the client connects
also accept a single client connection when --ideslave-socket is provided (I don't see any reason to have multiple clients at all!)
Use a zipper-like proof state

Proof state now contains the term in focus, its environment, and a path
through the complete term to reach that sub-term. As a result, large
proof terms are now checked more quickly

Cleaned up a couple of other things on the way...