Ensure can-value bound input stay in sync with compute

It's possible for a `can-value` bound input to become out of sync with it's underlying data if that data is a compute with a setter function. The setter function might reject the user's input or set the value to something else entirely.

Previously we were assuming that the compute's new value would always be the same as the input's value. This checks to make sure that the values are the same, otherwise it sets the input's value to reflect the *actual* value of the compute.

Fixes #887