Reordering how types are calculated.

It's now in 2 steps, first generate all the stubs and mark them with Left
(because they are possibly unfinished), then put in the final ones and
mark them with Right.

The difference is seen through the typeOfM function, which will make
pointers from structures if they are Left. This fixes a bug where
classes were directly embedding the struct instead of the pointer
to the struct for their attributes (because the attribute's types
were not yet final, thus still in their "struct" form).