Implement ForeachStatement for (static) Arrays

I am currently stuck at the semantic analysis.
because depending on the type of the expression that is itterated foreach does diffrent things
how I check If the itterated type has thoose methods ?
-  `popFront()`/`front()`
-  `opApply`

Instead of calling visit it looks to me like it would be more stylistic and future-proof if you called flatten on a BlockStatement.

```
Statement[] stmts = [new ExpressionStatement(assign),
sv.flatten(new AstBlockStatement(fr.location, [loop.statement]));
auto stmt = new BlockStatement(fr.location, stmts);
```