evaluate(key) now fires a synchronous EVALUATION event with
{ key, variant, value, user } — the hook for wiring exposures into
analytics tools. New `integrations` config wires listeners at init,
each isolated; a throwing listener never breaks evaluation.
amplitudeIntegration(amplitude) sends $exposure (flag_key, variant)
through the customer's own Amplitude instance — their identity, no id
mapping — plus a featureflow_<flagKey> user property via Identify.
Deduped per (user, flag, variant) per page so render-loop evaluate()
cannot inflate billed event volume. Duck-typed; no new dependency.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>