clean-up
Support global store modification through shadowing
Don't inspect global env/store when doing GC

It is not needed as:
  1. addresses in the global store won't be reclaimable (because to be
     global it should be non-mutable)
  2. addresses reached by values and object in the global store will
     always be in the global store and not in the local one, as the
     global environment/store come from a previous evaluation, and were
     created before loading the current program
Merge global state with local one when dumping to file
Update tests