Rework extensions to be less dynamically controllable
Currently extensions can be dynamically added and removed via Object::add_extension and Object::remove_extension. This limits the caching the config system can do.
Since this dynamicity isn't really required, and is used primarily for tests, we could replace this with "extension sets" - a pre-configured list of extensions that can be switched between.
This would allow pre-computing of a merged config for each extension set.
SilverStripe have planned this item