Move webhook config loading, UUID and warning helpers and the atomic semicolon CSV writer out of geo_alarm so the upcoming point alarm clients can reuse them. Behavior is unchanged and the existing geo tests still pass.
Backend already treats a missing/null lightning.type as "no type
constraint", but the sandbox validator required it whenever a
lightning block was present, causing valid configs to be rejected
with "filter.lightning.type FLASH_CLOUD_TO_GROUND veya PULSE_IN_CLOUD
olmalıdır." Now the check only rejects an explicitly invalid value.