Rewrite declaration var, let, const indenting

One of the long standing bugs related to incomplete parsing was the mis-indent for the first item in a var list. 

The recently added remove redundant indent code turns out to also work here and reduces the complexity of some of the if/else/do/while statement code as well.   

Still needs python implementation.  Just wanted to put this out for early review.

Fixes  #256, #430