AST based parser

Almost complete ES5 grammar, few missing basic things:

* Function statements (functions inside functions. Not `f = function() {}`
  which is covered by function expressions)
* labels
* `for in`

Furthermore, for now identifiers and string literals only contain the first letter.
They will contain pointer+len field; deferring until the VM internals are redesigned.