Work on the unverified implementation

Move the lexer to use Parsec and so be able to track source locations.