Fix a bug when mutating undefined symbols.
Move predefine semantics out of environment.
Move some types of bindings outside of Environment.