Split Scope into Scope (internal data structure for the E interpreter, including local variables, etc) and EEnv (simpler structure exposed to E code, replacing safeScope, etc). This avoids the need to tame access to these objects and hopefully makes the code easier to read.

Various possible optimisations are on the compiler branch (these mostly have only a small benefit or don't work fully; otherwise I push them to next). These optimisations work for both the current E interpreter and for a possible future E compiler. There is also a very old wip-compiler branch that actually does compile E to JVM bytecode. However, it turned out that the major performance problems were elsewhere.