compiler: Partially sort union member type checks

This lets us produce consistent IR for simple types like (Listof <any>)
and <list-element>.

Closes #42
runtime: Use PROT_NONE for our Valgrind hack page

We were using the normal DynamicMemoryBlock allocator which will create
a PROT_READ | PROT_WRITE mapping. Under Valgrind on Mac OS X that will
create a writeable mapping at 0 which means we won't catch NULL
dereferences. Instead have DynamicMemoryBlock map a page with PROT_NONE
explicitly.