Adds correct semantics
Add comments.
Remove setActiveDescendant as a public member and fold it into selectedItemChanged; code manipulating the list from the outside should only set the active descendant indirectly as part of changing the selection.
Now that basic-selector exposes an _itemAdded() helper, take advantage of that to assign ARIA role and default ID on an item.
Ensure that generated item IDs are unique even on pages containing multiple instances of basic-list-box.