Add a layout pass to the struct derive logic.
This version will be similar but somewhat different to what's in piet-metal now. Hopefully a little simpler to use (no distinction between packed and unpacked structs) and better structured.