Implement lexer from purescript in purescript

This is still a work-in-progress. 

- [x] I need to figure out how to handle multiple modules per file, without breaking the indentation rules. I think the solution might be to just disallow multiple modules per file. I don't think very many modules use that "feature" anyway, except for the Prelude.
- [ ] Issues parsing some commands in `psci`.
- [x] `splitModules` is a hack. Need to find a better solution.