Caching aggregate size, incomplete struct/union.
Reworking structs/unions. This commit breaks stuff.
Moving toward reworking structs and unions.

This fixes some issues with them, but it's pretty hacky. I'm working on a more
thorough refactoring/redesign.