refactor(ocpp): use union types in common code where possible
- OCPPServiceUtils: use SampledValue union in generic constraints
instead of inline OCPP16SampledValue | OCPP20SampledValue union;
use StatusNotificationRequest union in satisfies check
- BroadcastChannel: use MeterValuesRequest/Response unions instead
of OCPP20-specific types in version-dispatched handleMeterValues
Stack-specific types remain in version-switch branches where
TypeScript requires narrowed types for array push operations.