fix a test case I recently broke
implement instructions in the interpreter in enum order
enable the interpreter to execute functions from distinct units
hide the actual garbage collector behind an interface for greater flexibility