First version with working foreach

It is however still fairly limited at the moment. It is at the moment
only implemented in the C code generator, not in the jit. Also you
probably can't loop over a map that you're already looping over inside
another loop. Example:

{foreach $key in $map}
  {foreach $key2 in $map}
  /* stuff */
  {/foreach}
{/foreach}

That is probably not possible, it is probably possible to loop over $key
in the example. Also the looping order is pretty much undefined as for now.