memory related refactorings:

refactored memory so that it isn't encoded
made L1/L2 interpreters encode numbers themselves
provided print with a flag to say whether the numbers are encoded are not
fixed a few bugs in the L3 interpreters (though not all tests are passing yet)