Optimized Variable Store Loading

Optimized Variable Store Loading

The performance overhead for deserializing data from a JSON document was
very small relative to loading texture. However, the overhead can stack
up and become quite substantial. This commit resolves performance issues
regarding this.

- Implemented IImmutableVariable, which is like IVariable only it cannot
be mutated. This allows for caching at the ResourceLibrary level safely.

- The default implementation of JevaEngine's resource library now
exposes an openConfiguration and openMutableConfiguation. The
openConfiguration method caches the IImmutableVariables loaded through
it via a SoftReference. openMutableConfiguration does not perform any
caching (as it would not be possible to cache mutable IVariables.)

- This provides the map-editor with some free optimization, and cleans
up some code in the engine's World's static factory method (which
previously handled caching on its own.)

Jeremy. Allen. Wildsmith.