Speed up reading from a global variable.

This is most useful when inlining functions which use global variables. On a
simple micro-benchmark which repeatedly reads a global variable, this leads to a
2x speedup.

While here, move the class into another file, as it was out of place in the main
interpreter.
Remove unused variable.
When updating an existing cell, we often don't need to do a full dict lookup.
More thoroughly address the trade-offs of the new implementation.
Merge pull request #77 from hippyvm/opt_globals

Merge branch opt_globals