Added better struct and stack handling.

1. Now there's just a single add esp to restore the stack after calls.
2. struct types use the data/result pointer work around.