Write a function that deeply merges two complex configuration objects while handling arrays and null values according to custom business rules.
Implement def deep_merge(base, override):. Both arguments are JSON-like dictionaries. Recursively merge dictionaries, concatenate arrays as base + override, let non-null override values replace base values, and preserve the base value when an existing key has a null override; keys appearing only in the override are copied, including null values. Return a new object without mutating either input.
def deep_merge(base, override):