fix Value assignment operator under reassignment, see #128

For v = v2, a pre-existing value in v of a different type to v2
could disrupt the copy.  Thanks @pattacini for reporting.