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!)
Remove all the handle arguments

Now, the output mode specifier is the single canonical source for what
handle to output on.