rewrote lexer and parser by hand

I decided against using a parser generator for reasons of simplicity,
efficiency, correct line:column information in tokens, and control over
error reporting.  Both Jison and my offline experiments with pegjs go
out of the door.

I implemented a regex-based lexer and a recursive descent parser which
total exactly 100 lines of CoffeeScript code (excluding comments and
empty lines).