`sprockets.UI` also contains `RoleType`
binding.implementation -> binding.object
`polling_interval` is used in Promise.wait() and was never defined
when Promises were brought in from HyperFrameset
SprocketDefinition.prototype.__definition__ ->
	SprocketDefinition.prototype.__properties__
sprockets.register(options, sprocket) now copies all fields of `options`
into the registered rule. Preparation for `enteredComponent`, `leftComponent`
A component registration that in turn registers sprockets can
now receive notification when those elements that match those sprocket
registration enter the component.
`enteredComponent` callbacks were only based on an ancestor scope to
an inserted node - didn't work on startup when the "inserted node" is document.

Dumped `enteringRules`. Ideally all registrations are made before start()
Update "tree" and "menu" demos to use `enteredComponent`
bufferRules() was throwing because sometimes there was no ancestor scope
Refactor:
- createCompositeWalker(root, skipRoot) consolidates nodeIterator usage
- sprockets.isScope(element) consolidates scope check usage
Refactor: getInterface() uses getSprocketRule()
Element#ariaMatches
Expose bindingRules as sprockets.rules (for inspection only)
Migrating `Meeko.sprockets` registration API to

registerSprocket(selector, definition, enteredComponentCallback)
registerComposite(tagName, definition)

The following old API are just wrappers for the new.
register(selector, definition)
registerComponent(tagName, definition)