Basic initial implementation of the while loop.

This implementation is a bit dumb so far since it unconditionally does
loop unrolling for loops with constant test expressions. We'll improve on
this some more once we have a codegen node type for C-style for loops, so
we can produce a simple for loop in cases where we know at compile time
how many times the loop will run.