Add relocation table output. Necessitates some changes to chunk structure.

Starting with this version of asm2bc, there is a specific chunk order
that doesn't change:

The first chunk is always the version chunk (VERS) and the second chunk
is always the offsets (OFFS) chunk. The former tells you the bytecode
version, the latter tells you the offsets of all chunks in the file
relative to the start of the VERS chunk. After that, the chunks are
organized according to what seems to work, but a VM may choose to
load the chunks in any other order.

All chunk sizes previously included a size for the chunk following the
chunk ID, but the size was only the that of the chunk's data in bytes.
The size now is now that of the entire chunk, including ID, size, and
data. Effectively, this just means a difference of 8 bytes. It's only
there for anything that wants to do bounds checking on reads.

The first chunks in the sequence are now the label (LREL) and data
(DREL) relocation tables. Each of these is a table of instructions that
reference labels or data so their addresses can be updated either by a
linker or the VM at load time. This should simplify the loading of
arbitrary modules, since it means there's no guesswork about what does
and does not need its address updated.

I will probably write a tool to merge assembled bytecode later.