Don't extend Element on purely role interfaces

"HasValue" is not really an "Element," and making it not an element
prevents implementations from being encouraged to handle clients trying
to ask for an element of type "HasValue" or any of the other mere role
interfaces like Disableable or Clickable.
Add HasAttributes element role interface
Merge pull request #22 from darcy-framework/has-attributes

Clean up element interfaces, add HasAttributes