Add support for 'role' attribute.

This commit adds support for 'role' attribute for all HTML elements
except:
 - those elements that are obsolete in HTML5. (See a list of all HTML5
   elements here: http://dev.w3.org/html5/markup/elements.html)
 - those elements that can have "no role" AND have strong native
   semantics. See
   http://www.w3.org/html/wg/drafts/html/master/dom.html#sec-strong-native-semantics
   (The only exception to this exception is the "input" element.)
Resolved conflicts from role attribute support merge