PEG-based expression parser / rewriter

This replaces the shallow & sloppy expression parser / rewriter from
KnockoutJS (in KnockoutExpression.js) with a thorough parser that ensures
valid expressions and rejects invalid ones with proper error reporting. At
around 90 lines the grammar / rewriter is also easier to port to PHP.

To avoid repeated re-generation of the grammar a prepublish script is hooked
up in package.json that rebuilds KnockoutExpressionParser.js on 'npm publish'
and local 'npm install'. A user of the grammar can simply require the parser
directly.

This code will be hooked up in a follow-up patch.