Make `SelectionWidget.values` a dict

rename `labels` to `value_names` and `_value` to `value_name`.

To specify a mapping of value names and values, use a dict. If you specify `values=[list]`, then an OrderedDict will be used, whose keys are `str(value)`.

Assignment to `values` after construction only supports a dict.

closes #4961