Fix c_for pretty printer

* calling is_assigned on the loop node always catches the loop index
  assignment...
* reserve was added using the wrong parameter
* c_for_loop was never called and thus completely broken
* reserve implementation was buggy too

outch...
Add missing std::forward
Unrolled, recursive version of array offset computation
Fix bad combiner ordering

In one must first assign a type to the lhs before combining its type
with another, otherwise an incomplete type information is used.