Proxy subclass setters now use Modify.

Originally, Shielded was meant to be used with structs as entities.
For this reason, the Modify method exists - to avoid copying bigger
structs around. You pass a lambda to Modify, and it works on the
internal copy of the struct, which Shielded has to make anyway since
you cannot change a committed version of the data.

Proxy subclass setters used to work by reading the Value property
of their underlying Shielded struct, changing their copy and then
writing it back into the Value. This made the setters too slow on big
classes. So they now use Modify. This is slightly slower on small
objects, but behaves much better as they grow.