Integer types

Fix the type of sizeof:

sizeof is currently typed unsigned int but should be size_t, which is platform dependent and should be handled as such in the compiler probably by adding an internal type representation similar to that of unsigned int ( uint_type) called size_type which will be uint_type or ulong_type depending on what platform it compiles for.

The compiler is currently full of assumptions. Those assumptions should be factored out into platform configuration files.

Maybe add a box type for intptr_t-style boxes. Currently this is long, but long isn't required to be able to hold pointers. intptr_t is also not required to exist, but for generics to work the way they currenty do, we need int -> ptr at the C level.