Fixes to functional release

ContentSingletonPathProcessor (inbound/outbound), mirroring the path alias pattern. Clean bundle paths (e.g. /news-stories) now rewrite to the canonical entity route before routing occurs, so local task tabs, route parameters, and access checks all work on the frontend URL without a separate route or router rebuild.

Fix "existing default revision can not be changed to non-default" crash when saving a draft with entity_reference_revisions fields. Root cause: the base ModerationHandler's enforceRevisionsEntityFormAlter() is a no-op, so setNewRevision(TRUE) is never called before save(). Fix registers NodeModerationHandler for content_singleton when content_moderation is installed.

Fix TypeError in ContentSingletonForm::save() where doSave() returns FALSE for non-default (pending) revisions. Coerce to SAVED_UPDATED.

Remove the manually rendered revision_log textarea from ContentSingletonForm::form(). It collides with ERR WidgetBase:: extractFormValues() causing a fatal "Cannot unset string offsets" error when paragraph fields are present.

Add theme system support: hook_theme(), hook_theme_suggestions_ content_singleton(), preprocessContentSingleton(), and a base content-singleton.html.twig template with bundle/view-mode suggestions.

Add Mercury Editor support via hook_entity_type_build(). Registers MercuryEditorContentSingletonForm as the mercury_editor form class, guarded by class_exists() so it is a no-op without ME installed.

Hide the "Add singleton" action button when all bundle types already have a singleton entity. ContentSingletonAddAccessCheck implements _content_singleton_add_access with proper cache tags.

Extract getExistingBundles() from ContentSingletonAddController into a shared ContentSingletonHelper service.

Move admin listing path from /admin/content-singleton to /admin/content/singletons.

Closes #3593282

Merge request reports

Loading