New GET /recordings/storage/breakdown endpoint returns storage usage
broken into three categories: overwritable (continuous recordings),
event_retention (active alerts/detections), and protected (indefinite).
In rollover mode, RecordingCleanup no longer deletes recordings based
on continuous.days / motion.days. Instead, StorageMaintainer handles
overflow by deleting oldest recordings when disk fills up. Deleted
cameras have their recordings removed immediately rather than waiting
for time-based expiry. Review segment expiry still runs normally.
Introduce a new RetainPolicyEnum with 'time' (default, existing behavior)
and 'continuous_rollover' (fill disk, overwrite oldest) options. Add the
retain_policy field to RecordConfig and include unit tests for config
validation.