This "header" is now embedded directly into the struct. The semantic
of a header never really matters in the actual runtime anyway, it's
only for bytecode (de)serialising.
This means if I write the new assembler in another language I only
need to FFI this header rather than all the functions as well which
may not be as useful.