1.4.1: code-review + regression-test correctness fixes

Five separate findings from a 1.4.0 code-review pass + a 1.4.0
field-test pass on portal-dev-litespeed; folded into one tag
rather than 1.4.1 + 1.4.2 back to back.

CRITICAL bugs that 1.4.0 shipped with:

1. Settings form re-corrupted sampling_overrides on every save
   (bug present 1.1.0 - 1.4.0). The outliers and sampling_advanced
   fieldsets defined LCP/INP/CLS/FCP/TTFB child fields with
   #tree=>FALSE on the parent containers, so the HTML input
   names collided and #config_target wrote outlier-threshold
   values (30000-scale) into sampling_overrides. The next save
   then failed validation, locking operators out of further UI
   changes. Fix: #tree=>TRUE on both fieldsets.

2. 1.3.0 database collector was dead code in production.
   DatabaseInstrumentor's onRequest listener at REQUEST priority
   256 ran before DatabaseCollector at 255 set enabled=true from
   config, so setLogger() was never called. Counters always 0,
   context_data.database absent on every beacon. Fix: drop the
   priority-256 listener entirely; collector at 256 owns reset
   + setLogger + threshold. One ordering, no race.

3. OPcache + APCu probes returned CLI-worker stats under drush
   cron (hit_rate: 0 with cached_scripts > 1000). PHP OPcache
   and APCu are per-SAPI; CLI cron sees its own instance.
   Fix: PHP_SAPI === 'cli' check in both probes, skip the row,
   log an actionable warning each cron run pointing operators
   to HTTP-context cron (curl /cron/<key>).

Hardening that wasn't urgent but pays off accumulated debt:

4. Textarea fields (upstream_id_headers, probe_targets) had no
   validation. Bad lines silently dropped at runtime with no
   form-save feedback. Fix: validateForm rejects malformed
   header names and non-http(s) URLs per-line via
   setErrorByName; both fields capped at 32 entries.

5. isCacheableForSharedCaches duplicated verbatim across
   CwvRequestIdSubscriber and UpstreamIdSubscriber. Both are
   SA-relevant defences; copies would have diverged silently
   on next maintenance. Extracted into Drupal\cwv\Http\
   CacheControlInspector::isCacheableForSharedCaches.

Operator-experience touch-ups:

6. cwv watchdog channel is now seeded by hook_install, so
   operators can filter dblog by Type=cwv from the first visit
   rather than having to wait for an error to land.

7. README runtime-probes section explains the per-SAPI
   OPcache/APCu state issue and the system-crontab + curl recipe.
   Form descriptions on the OPcache, APCu, and edge-cache probe
   fields call out the requirement at configuration time.

Library version bump 1.4.0 -> 1.4.1 (cache-busts the JS asset).
No schema changes, no config-key changes, no update hook.