we don't need the field/value names duplicated like this for destructuring
use node's --harmony --harmony-typeof flags for running the tests.  add a test for 'typeof null'
this is all, all wrong
don't switch from NewExpression to CallExpression
provide a means of making nodevisitors that don't actually copy the tree
in @generateCondBr don't call _ejs_truthy if the binary/unary op already returns a bool.  add types.returns_ejsval_bool and use it for the boolean valued ops
const test, we fail
add a fib test (we fail), and expect failure from it and const1.js
use locals to keep from having to repeat 'types.' on the prefix type attributes
the typeof intrinsics are readonly and return ejsval bools
the typeof checks should use @createCall to get the _ejs_returns_ejsval_bool magic
moar tests
negative typeof(something) ==[=]? 'string-const' as well
make sure we return rv, and add a comment
we can inline the unary-not operator if we know the value is a bool
the exports object is handled in a special way by the runtime, which means it's not closed over like normal variables.  sucks, but this is broken unless we do it this way.
add consts.string to wrap llvm's IRBuilder.createGlobalStringPtr
split NodeVisitor into two implementations

one is TreeVisitor, an inplace non-copying tree iterator.  the other is TreeTransformer, a copying iterator
all these passes are TreeTransformers
these passes are TreeTransformers