Ensure can-value bound input stay in sync with compute

This change ensures that when the compute value is set due to a user
typing into an input, that the input's value is checked against the new
value and that they are the same. Otherwise it is possible for the
compute to reject the input's value (or set it to something else
entirely) and the input and compute value become out of sync. Fixes #887