Object: fix isA for Enums
bytecode compiler: separate directory
compiler: remove given
bytecode compiler: more precise error message for match failure; fix bug in operator->= call
eh interpreter: use strict left-to-right evaluation

(Found this because ehb correctly throws an error about foo instead of bar in the test.)
bytecode compiler: fix two bugs
xor: make it a method rather than a built-in operation
tests: fix a few
bytecode compiler: fix lots of random bugs
Hash, Map: make literals create Map instead of Hash objects

I accidentally did this in the bytecode compiler, and Map seems better than Hash in general.

This uncovered a serious bug in Map, where a Map object created in a different file than the one where it is used
woud lead to a segfault. I changed a bunch of functions that took EHI objects to take EHInterpreter instead in an
attempt to fix this bug, but decided that that solution was still flawed. For now I worked around the bug with
some mutable state in the Map object, but bigger changes to the EHI/EHInterpreter system are ultimately needed.