capture imported modules

also add an import statement, but probably going to kill that
and just extract the imports from wherever modules are used

reordered the resource type IDs to put imports first

fixed up the qbi resource output. still not outputting actual imports though
clean up how module headers are stored

module name now stored in a regular string
module version/iteration also ready to be extracted from code
improve error msg when typing in wrong module name
removed the import stmt

can just pull it from the existing code well enough
write the imports index to the module file

now qbi knows where to look for the imports and displays them
also stopped capturing the compiled module
add utf-8 characters to hello test program
move module compilation into a function

this is preparation for allowing loading/compiling dependencies of the
currently compiled module

also change input to be the module, not the source file
switch string resource length to be bytes

makes more sense since the length was wrong for utf8 strings anyway
fix import list to not include * typevar module
load imported modules during compilation

seems to work, but they're not being used yet
add type variables to register allocation
start assigning type info to registers

also differentiate between src registers and dst registers and require
that src registers be allocated (and eventually typed) in an earlier call
add compilation of fieldget/fieldset instructions

also added qbi support but neither execute yet
add opcode name to ifcmp instruction
more informative out for module load failure
first pass at implementing field get/set

also moved some Failure code into the .cpp file
first pass at getting tests to compile

runs 1 dummy test so far. need to add more.
start switching away from bitfields

using pragma to set the struct byte packing instead, which is better
rename qbrt/arithmetic.h -> instruction/arithmetic.h
switched all instructions to pragma byte packing

should be no more bitfields in the instructions anymore