Add a field to each HDDS layout feature object that allows it to specify the requirements SCM must enforce when it needs to be finalized. Currently there will be two options:
1. Close all containers: The current way finalization works, which involves closing all pipelines and containers and moving datanodes to a readonly state until they finalize.
2. None: No special requirements. The layout feature can be finalized while datanodes are serving reads and writes. Individual datanodes must still be finalized before they can use new layout features.
Another requirement could be the number of datanodes that must finalize before SCM declares finalization as complete. A minimum number may be configured by default, but some features like erasure coding may have a specific number, like 5, needed before the feature can be declared finalized.