feat(collections): add public flag to gate URL access
Separate 'reachable by URL' from 'active': a new collections.public boolean
(default 1). A private collection stays fully manageable in admin and readable
via the API/facade, but mints no front URL and is excluded from the sitemap.
URL resolver and sitemap now go through getPublicCodeMap() (active AND public,
renamed from getActiveCodeMap); the code cache stores the filtered map. Admin
form gains a Public checkbox. Reserved-code validation stays flag-independent
so a private code can go public without a segment clash.
(default 1). A private collection stays fully manageable in admin and readable
via the API/facade, but mints no front URL and is excluded from the sitemap.
URL resolver and sitemap now go through getPublicCodeMap() (active AND public,
renamed from getActiveCodeMap); the code cache stores the filtered map. Admin
form gains a Public checkbox. Reserved-code validation stays flag-independent
so a private code can go public without a segment clash.