Aural optional media extension — developer test build

This extension is separate from the old Extension/ tab-volume experiment.
It shares media titles, artist/artwork, playback state and targeted play/pause
commands with Aural on this Mac. It does not capture audio or change tab gain.
Private/incognito tabs are excluded. Only HTTP(S) frames are supported.

1. Put Aural.app in Applications and keep it there. Open Aural, then go to
   Settings > Browser > Optional browser extension and enable the connection.

2. Load the extension:
   Firefox: visit about:debugging#/runtime/this-firefox, choose Load Temporary
   Add-on, and select firefox/manifest.json in this folder.
   Firefox temporary add-ons disappear when the browser restarts. This test
   extension has not been signed by Mozilla or published to an add-on store.
   Do not disable Firefox signature checks. Zen/LibreWolf developer loading
   and native-host discovery depend on those browsers' current policies.

   Chromium: visit your browser's extensions page (e.g. chrome://extensions),
   enable Developer mode, choose Load unpacked, and select chromium/.
   The extension popup shows its extension ID; copy that for the next step.
   Keep the unpacked folder in a permanent location.

3. In Aural's Optional browser extension section, select the browser. For
   Chromium, paste its 32-letter extension ID. Click Set Up Native Connection.
   This writes a launcher and the native-messaging registration only for your
   macOS account. It allows this extension ID, not every installed extension.
   If Aural moves later, repeat this setup from its new location.

4. Open the extension's toolbar popup and turn on Connect to Aural.
   Reload existing media tabs once so their content scripts load. Play a video.
   The popup and Aural should show a connection; the media title should appear
   in that browser's mixer row. No AppleScript/JavaScript-from-Apple-Events
   permission is needed for this extension connection.

5. Test with two browsers playing different titles. Pause one from Aural and
   confirm only its selected tab pauses. Check private tabs are excluded.
   Protected pages, browser internal pages and players without HTML media or
   Media Session metadata may not expose a usable title or controls.

Safari: this package is not a Safari Web Extension. Use Aural's Safari scripting
connection and enable Safari > Settings > Developer > Allow JavaScript from
Apple Events. A packaged Safari Web Extension requires a separate Apple build
and distribution workflow.

Disable/uninstall:
- Turn off Connect to Aural in the popup or disable the add-on in the browser.
- Turn off Enable local extension connection in Aural to stop the socket and
  immediately clear extension metadata. Popup disconnects expire within 8s.
- Use Remove Connection for each browser to remove its native registration.
- Delete the unpacked extension files only after removing it from the browser.

Metadata is held in memory and expires when a browser disconnects. Aural's
selected native connection gets priority over scripting for that browser while
connected. No audio recording, remote endpoint, analytics, shell commands from
webpages, or arbitrary script execution is provided by this bridge.

Test status: automated native-host/socket-pair and mocked extension tests are included.
The pathname listener cannot bind in the agent sandbox and needs desktop testing.
Live installed Firefox/Chromium browser testing is still required. Browser fork
native-host search paths vary; an unsupported fork may need manual registration.
The regular Aural build remains ad-hoc signed and not Apple notarized.
