Fix bug: reference caches weren't working right without global env.
The problem arises when there's a compiled file that does something like this:
(define foo ...)
...
foo
What happens is that the linker creates a cache for 'foo' before evaluating
code; there's no binding for 'foo' yet but one is needed for the cache. In the
case where the evaluation environment extends to the global environment, this is
handled by making a placeholder in the global environment.
However, if the topmost frame is not the global environment, it was creating a
dummy cell that wasn't connected to any environment. Consequently, when the
definition was evaluated, it created a new binding, but since there was no old
binding in the environment chain, the dummy cache wasn't updated to the new
binding's cell.
I've fixed this by forcing the creation of an unbound cell in the outermost
environment (i.e. the one with the null environment as its parent). This is
essentially the same solution that's used when the global environment is
present, with the outermost environment playing the role of global.