Add removeWhere() as a complement to addWhere().

This follows along with last week's removeField() addition. We
should also follow through with removeJoin() but I don't need
that quite yet.
Rework behavior when restoring bad values.

Previously, when restoreValue() resulted in a ValueError or
TypeError when setting ctrl.Value, we'd set Value to getBlankValue().
Now, we log an error and leave Value at whatever it is currently
set to, which will be the blank value by default.

This allows dControlItemMixin-based controls (dListBox, dCheckList,
etc.) to restore the valid values: prior behavior would cause one
bad value to keep all values from restoring.