This adds shader generation of writers (and cleans up some other things) and much better support for enums.
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.