implement struct and union layout

This implements struct and union layout.
This works for basic things.  I haven't tested bitfields
or any other unusual scenarios.