[BREAKING CHANGE] Allow options with similar data

Problems:
1. OptionWidgets were required to have unique data within a select,
   which can cause problems and confusion, especially since conflicts
   were handled silently in unintuitive ways.
2. Item data was hashed when the item was added, essentially freezing
   the value at the time of adding. If the item's data changes, the hash
   is invalid and stops working.

Thoughts:
1. It's actually not necessary for options to have unique data, and it
   may be generally useful for other kinds of elements to have data, and
   other kinds of groups to be able to access elements by that data.
2. While thus far we've not had an issue with items having unique data,
   it seems that we are destined to need this eventually, especially
   with drag and drop between groups on the horizon.

Solution:
1. Add 'data' config option to Element, stored as 'data' property,
   accessed using 'getData' method and modified using 'setData' method;
   store data property in Element
2. Remove data argument, data property and 'getData' method from
   OptionWidget
3. Move getItemFromData from SelectWidget to GroupElement - make it
   return first matching item
4. Add getItemsFromData method to GroupElement, which returns all
   matching items
5. Remove logic in SelectWidget that indexed item data and enforced
   unique item data constraints
6. Update subclasses of OptionWidget to no longer pass through the data
   argument
7. Update callers to use the 'data' config option instead of an initial
   argument

Change-Id: I7ee78b6d0b734c32fc6dd3760c6ec45362ef8571
Merge "[BREAKING CHANGE] Allow options with similar data"