Proxying tracks changes to property value

Proxied properties are no longer replaced on initial access and will
fire off the proxy function on each and every access. They will also
track the value of property even if it is reset later (explicitly or
through a call to $extend()).

The current value of the proxy is always passed as the first argument to
the proxy function on every access, though you can still pass optional
arguments to $proxy() that will be applied as well.