More ports from aria-toolkit and enhancements

* Implicit semantics
* More audits:
 * RequiredOwnedAriaRoleMissing
 * DuplicateId
 * RoleNotScoped
 * BadAriaAttribute
 * UnsupportedAriaAttribute
 * AriaOnReservedElement
* Fixed BadAriaRole audit to handle abstract roles
* Several supporting changes and optimizations to utility methods and constants.
* A few minor formatting tweaks

I'm optimising the loop by avoiding loop invariants. Doing it this way avoids creating another variable. There are other, more conventional ways. I'll rewrite it because it makes people go "huh?"