New lexer

This consolidates the latest commits in the `lexer` branch.

The tests now pass, but `test-everything` does not. The main issue seems to be things like

```purescript
f = do
  return x
  where
  x = 0
```

in which a `where` block is indented at the same level as the current nested block. Maybe this can be handled in the lexer as a special case.

I also still need to fix some issues in psci.

If we want to commit to the changes in this branch, we also need to break up the Prelude into separate modules, and generally disallow multiple modules per file.

One more option is to keep our current approach to indentation, which won't give us the nice new simple parser, but which will allow multiple modules and avoid needing special cases in the lexer. We would still be able to keep comments in the AST. Parsing explicit braces (#774) might be more difficult though.

@garyb @joneshf Any thoughts on this?

This is taking a while, so I'm happy to keep what we have if that's necessary to make progress.