Add a lexer and parser

This branch adds a ragel based lexer and a racc based parser.