Previously, had added a mechanism to force speculative values to be
applied to root object when caller provides a value to speculate on
top of.  This breaks because not actually copying over val when
transferring_to_root.  Creating a new mechanism to handle this.
Updated speculation to permit forcing overwrites of internal values.  Similarly, speculate calls no longer pass values to speculate on top of into objects.  Note: this appears to have caused a bug in ContainerSpeculationTest.  Fixing now.
Minor bug: had been speculating on root values when should have beens speculating on outermost speculating on object's values.