Fix syntax error in the output of for statement with some form of expressions

The semi-colon in the initialiser part of the following for statements
were missing in the .to_ecma() output :

for(Q||(Q=[]);d<b;){d=1;}
for( 2 >> (foo ? 32 : 43) && 54;21;){ a = c;}
for(/^.+/g;cond();++z){ev();}
for((new Number("32"));f;g){}

Fixed by looking for the various AST classes so as to add a
semi-colon or not. Tests added.