Fast interpreter

The current interpreter executes bytecode directly which makes it
difficult to share code between it and the LLVM and DynASM backends.
It's also very slow for obvious reasons.

Convert the interpreter to first translate bytecode to a more efficient
format and implement a fast interpreter loop with GCC labels as values
extension that's also available on Clang.

Control transfer instructions are not supported yet because we need to
map bytecode offsets to the format used by interpreter. That's
relatively easy to fix after the translator knows about basic block
edges which is required for LLVM and DynASM anyway.

Fixes #18.

Signed-off-by: Pekka Enberg <penberg@kernel.org>