Fix mis-indenting in untainted var lines

Fixes issue #184.
Add bare if-for test

Closes issue #108
Python: removed dead code
Various cleanups found during sync with python
Sync python with the js new sweetness

Closes #185
Refactor js structure to match python

The two files still differ but they are at least similarly structured.
Also, it is now easier to find the main code path.

This is certainly not a best or final design, just a sufficient one.
Remvoe kruft in [] processing
Make statements inside blocks close when the parent block closes

Closes #186
Make statements inside expresions close when the parent closes

This is not valid syntax but we still want to degrade gracefully.

Closes #186 (even more firmly)
Clarify comment for OBJECT mode recovery
Move handlers variable further for better perf
Move constants earlier for clarity and add opt variable
Correct input_length for preindent scenario
Make array indents more conistent with other block indents

Closes #17
Create a MODE enumeration object