Add closure-checking equality to bytecode, and update compiler

The intermediate language targets the new bytecode instruction directly,
so we also introduce a new primitive instruction to test whether a
bytecode value is a block or not (so we can tell whether the result of
the equality test was a boolean result or an error indicator).

As yet untested, since metatheory and/or translator are broken.
This commit will also break the compiler proofs.