[BREAKING CHANGE] Element mixin refactor

There are three kinds of element mixins:
* Content: groups, icons, indicators and labels
* Attribute: flags and titles
* Behavior: clippable

There is now a naming convention based on this classification:
* Content: no suffix, like GroupElement, IconElement, etc.
* Attribute: "ed" suffix, like FlaggedElement, TitledElement, etc.
* Behavior: 'able" suffix, like ClippableElement, etc.

Also, content mixins generate elements by deafult, whereas attribute and
behavior mixins operate on $element by deafault. In both cases, this
behavior can be adjusted by passing a config option into the
constructor, or using the set{Type}Element method, such as
setButtonElement.

Bonus:
* Icons can have titles too now (as indicators already could)

Collateral damage:
* FieldLayout uses a span (automatically) for the label instead of a
  label tag, consistent with the general apporach to avoid use of
  semantic HTML unless we get specific value out of it, which in this
  case we did not, and were already mimicing the behavior of clicking
  on a label, since HTML requires the label to either wrap the input or
  be connected through an ID, both of which aren't going to work for our
  use case at this time.

Change-Id: I1abecd8aaf694799e4e46acb07afbdfb458a4882
Merge "[BREAKING CHANGE] Element mixin refactor"