read32, read16, read8

I expect most reads to be aligned, and reading 32-bit words from
main memory is much more efficient than reading bytes. We therefore
store Glulx memory as an array of int32s, and use bitwise masking
and shifting to read smaller or unaligned values. LuaJIT's tracing
JIT should inline this and strip out the checks in some cases.

Thinking about the best way to store the global interpreter state.
I did a few tiny benchmarks, and it looks like manually passing in
a 'this' pointer is a decent strategy. For now, use a variable-size
struct with Glulx memory at the end, so there's no extra pointer
indirection; but we might want to store the stack there instead.
Moved memory functions to a module.
Added write32, write16, write8

The bit module has slightly tricky semantics -- it always returns
32-bit signed values, but constants like 0xffffffff are treated as
unsigned by Lua. Unit test proved its worth!