Use a wrapper function for globals

This makes the behaviour much closer to `with` in that global vs. local
is computed at runtime by seeing if the variable is passed in or not.
This lets you implicitly make use of **any** global and it makes sure
that **any** name can be used as a local.