Reselect a valid value when our bound list changes.

In bind to(Property, ListProperty, ...), if the list property changes
to a new list of values, and our property's current value is not in
that list, then set the property to the 1st valid value.

Previously, we would leave the property alone, which meant the select
box would get selectedIndex == -1, but this made for a wonky UX,
where a property's current value was not reflected in the UI.
Automatically clear temporary errors on change.