Get turns to delete for undefined values

Previously, get would always set on the target side.  Now, it will
delete if the value is null or undefined.  These behaviors of "get" are
now documented.

This also introduces restorative cancelation on bindings.  That is, if a
binding is canceled, the bound collection will be restored to the state
before the binding was applied.  This makes it possible for a get
binding to be gracefully moved to a different key, without "painting"
the corresponding value over all the keys it visits, and allows a "has"
binding to remove a value that it introduced when the binding is
relaxed.  This is particularly useful for the case of a child that
maintains its presence in its parent's children collection until its
bindings are canceled.