Add deep immutability to arrays
Tidy up type checking code (use utility methods)
Add for-each loops!

This type of loop can be used to iterate over:
* Signed or unsigned integers, from 0 to n-1 (or n+1 if negative)
* Arrays
* Iterators (which are not reset before being used)
* Iterables

The syntax is:
for Type name in expression
{
  // code
}

For example:
for uint i in 9
{
  stdout::print(" " + i);
}
will print: 0 1 2 3 4 5 6 7 8