Switch campaign configs to YAML
This should be b/c with JSON campaigns, as YAML 1.2 is a superset of
JSON. I also hope this to be reasonably secure, the Symfony library
already restricts the spec to a saner subset of it. I've also enabled
additional deserialization restrictions.
- This introduces two Composer dependencies, both of which are already used for dev in core, or in production by extensions. Version specifiers were picked to ensure compatibility.
- There is Extension:CodeEditor integration for setting up appropriate indentation settings.
- I've moved two Campaign-related classes to their namespace, but they do not fully support DI just yet, so the coverage is only partial. That will be improved later.