use hasOwn here, and initialize map_size to 0, not size
allow null in the init slot of a VariableDeclarator
don't die if a given ast node doesn't have a location when trying to report a warning/error to the user.
replace the closure-conversion passes (ComputeFree, LocateEnv, SubstituteVariables) and MarkLocalAndGlobalVariables with NewClosureConvert, which does a *much* better job of placing environment creation, as well as picking the right environment to use for closures.
Don't use basenames for imported modules.

Basically this is preventing us from compiling
js files that are not in the current directory, i.e.
./ejs /tmp/sample.js.

This is needed for being able to run under the test262 suite,
as they run their tests from some temporary directory, i.e.
/var/tests/ch07/test.js, and we were failing to run properly.
Add a wrapper to compile + run a test case.

This is needed for test262, as they expect a command file,
which they invoke on each test file they have.
Add a small script to invoke the test262 on us.

We are assuming there's a test62/ directory next to echo-js/
WIP checkpoint.  all tests pass except sieve, and we can't self-host
Watch out for the return code of our binary.

We need to check that everything ran smoothly - otherwise,
it's a clear error.
all tests pass (finally)
remove some spew
finish up the new closure conversion stuff.  must document everything.
comment out all the spew, and factor out flatten_func_envs
remove some old comments
stage1 should use the es6 version of new-cc.js
DRY
fix infinite loop
new-cc puts the environment parameter name in
in DesugarArguments we need to make sure to put the key back into n.key, not into a local.  also for class methods set their name to 'ClassName:MethodName'.  lastly, add an argument to argPresent which lets the compiler know we have a default argument.
make analogous changes to the es6 version