LLVM fixes for C for loop, C for loop changes

This is NOT ready to be merged and needs more testing. I'm just putting it here so I can discuss the early versions with @ronawho ... I'm running into problems because C for loop induction variables are read in some cases after the loop body.
The copy() is needed for some reason that escapes me now. Without it the values were getting codegenned twice... and there was a good reason, I just can't think of it now.