some housekeeping in the CON code

tidy up label handling, annotate the switch blocks, code layout
handle script pointer encoding/decoding in CON bytecode

Pointers get written into the bytecode as instruction offsets from
the start of the script buffer (not bytes) that are added to INT_MIN
to help ensure a nasty crash when something tries dereferencing one
of these values without first translating it from the encoded form.

As a result of this, the save game code doesn't need to handle a whole
bunch of pointer trickery anymore, which is nice.