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
Merge upstream changes into node-package
Fix errors from review by evocateur
Ensure parseInt always has a radix.
jslint_happy should compare typeof options key, not literal string 'undefined'.
Property assignment lines should end with semicolons, not commas.