Reduce the Ruby compiler's memory usage
Even for an unoptimised and hastily written compiler, the Ruby compiler was using a bit too much memory. For desktop environments this is not a problem, but for memory constrained containers it can cause trouble; especially when running containers in parallel.
This commit applies various optimisations to the Ruby compiler to reduce its memory usage. Most notably the bytecode serialiser has been changed quite a bit to not allocate String objects unless truly necessary.
These changes combined reduce memory usage by about 20%.