On reflection, functions and constants are not safely elidable.

If the interpreter gets reset, this scheme won't work. Instead we should rely on
the GlobalImmutCache class to do the right thing (which it currently doesn't,
but that can be fixed). This leads to a roughly 10% slowdown on Richards.
Alter the immutable cache class so it returns None instead of raising KeyError.

This allows code that is searching for something that it doesn't hugely expect
to find to become much more JIT friendly. On Richards, this leads to a 1/3 speed
increase. This does touch a lot of the code-base, so there is a small chance
that it negatively effects something.