redesign of how terra types get translated to LLVM.

First, all function pointers are now stored in memory as &int8
function literals are converted to &int8 when used,
and the pointers are cast back when called.
Tests show that the constant folder eliminates the bitcast for the simple
cast when the functions are called directly.

this change allows the code that determines funciton signitures to use GetType
rather than needing its own GetTypeLayout.

Second, GetType no longer attempts to layout structs reached through a pointer.
Instead it leaves the type opaque until another call requests the type directly.
This removes the need for the "deferred" list during type layout. However, it
requires the client of GetType (i.e. the rest of the compiler) to call get type
directly on any type that needs layout information. The cases I know where this can happen are:

1. On an Alloca of the type (size information is needed)
2. An explicit lookup of size (e.g. sizeof or pointer subtraction)
3. A GEP of a _pointer_ to the type
4. A Load of the type