Splits some background script functionality into separate modules:
- Receiver selector handling is moved to ./SelectorManager.
- Status bridge handling is moved to ./StatusManager.
- Menu creation and updates are handled in ./createMenus.
- Shim creation is handled in ./createShim.
TypedEventTarget allows EventTarget-derived classes to export typed events.
Options type definition is moved to ./lib/options, module assumes more responsibility for update handling and provides a "changed" event.
Private cast._requestSession method allows bypassing receiver selector.