extend selectOptions to accept value:label map

It is often useful to have a lookup table for converting between underlying values which are actually stored and transmitted and the human-readable labels that represent them. This extension of selectOptions allows such a lookup table to be used to populate a select directly. By default, the options will be sorted alphabetically by label, the most common use case for a select; pass a `comparator` function or property name string to override this ordering (which delegates to `_.sortBy`).

TL;DR:

Converts
```javascript
bindings: {
  'select#sounds': {
    observe: 'sound',
    selectOptions: {
      collection: {
        moo: 'Cow',
        baa: 'Sheep',
        oink: 'Pig'
      }
    }
  }
}
```
to
```html
<select id='sounds'>
  <option value='moo'>Cow</option>
  <option value='oink'>Pig</option>
  <option value='baa'>Sheep</option>
</select>
```

Updated tests and docs.