Remove redundant Name from IntOp nodes

This name was needed when arithmetic operations were just functions, but
they were defunctionalized in 9d2adccc3308ccefa5d1215c1a041b1d70f5af8a.

This prevents inconsistencies between the two representations of the
operation; the current code just avoided them by being careful.
REPL: Add processStmtSimple WIP
Merge pull request #83 from Blaisorblade/topic/IntOpName

Remove redundant Name from IntOp nodes
Refactor monadic runners

There are far too many variations of how to run a monadic action. This
commit consolidates a few things without changing the order in which the
monad functions are called.

Further refactorings:
* A monadic runner does not need to get a function and its argument
  separately, so stop doing that.
* runMainErrors contains too much and prevents sharing the call to runErrorsT.
* parseCommandLine destroys the result of its argument for no great
  reason.
Move runErrorsT into parseCommandLine continuation

This should be safe because parseCommandLine is in CPS and does not use
the Errors monad.

One must also ensure that the Errors monad transformer does nothing
special if the effects are not used; this seems correct by inspection,
but I imagine it would be cooler to establish that using monad
transformer laws.
Monad wrappers: reorder more

Here I swap some runners where safe (hopefully).
runMainState ↦ withEmptyState
simpleRunMonads ↦ runOptMonadsWithAssertions, runMoreMonads ↦ runErrorsAndOptsWithEmptyState

I'm still slowly sorting this out.
Remove/cleanup monad runners

Now that I somewhat understand this whole thing, I can simplify a bit
all the layers I created.

* runErrorsAndOptsWithEmptyState can be folded into runErrorsAndOpts,
  adding state to a few callers who don't need it.
* runOptMonadsWithAssertions can be folded into its two callers
* runProcessFile can be inlined into its single caller (which is special
  anyway since it collects assertions)
* withEmptyState and runOptMonads can be moved into PTS.Process.Main
* withEmptyState can be shift leftwards at the top-level by swapping
  with runErrorsT, to clarify that it's a single shared state.
Cleanup interface for PTS.Interactive
Update REPL API and docs

* Take PTS instance as 1st arg
* Fix out-of-date code in DEVELOPMENT.md (we should automate testing of this)
* Expose state produced by processStmt, since there's no interesting
  return value. This means de-inlining some wrappers I just inlined :-(,
  but that's a local thing and with a clear purpose :-).
* Document how to lens out the interesting stuff
Start emacs mode.

This only implements basic syntax highlighting.
Expose location of bundled emacs mode via CLI.

This adds a command-line option `--locate-emacs-mode` that prints the
full path of the directory that contains the bundled emacs mode to
stdout.

If pts is installed with `cabal install`, cabal will also install the
emacs mode to some appropriate directory on the target system, and
arrange for `pts --locate-emacs-mode` to return the path of the
installed emacs mode.

If pts is build without installing it, cabal will arrange for `pts
--locate-emacs-mode` to return the path of the emacs mode in the source
tree. I tried this with `cabal run pts` and `cabal repl`.
Explain how to set up emacs mode.
Refactor emacs mode to use smaller functions.
Implement C-c C-l.

To call pts, the emacs mode needs to know the project directory and
the PTS instance. If there's a module statement in the file, the project
directory is guessed. If that fails, the user is asked once per buffer.

I don't know how to guess the PTS instance, so the user is asked once
per buffer.
Document keybindings in readme.
Cleanup PTS.Interactive
Recover performance by disabling debug

With profiling, this goes from 20 to 6 seconds. Without profiling, I've
seen something like from 6 to 2 seconds.

Feel free to reenable this code if you figure out how to make it cheap.
Activate profiling flags for profiling.