Materialization/Purge should be delegated to the `CertificateMaterializer` which keeps a state of the certificates currently materialized on disk.
By doing what we are doing right now, we can end up in situations in which the `CertificateMaterializer` thinks it's safe to remove the certificates, however the `FeaturegroupController` still needs them.
Also during the closeConnection should explicitly call the `CertificateMaterializer` to notify that the certificates are no longer needed, and, if no other operation needs them, they can be removed.
The same needs to happen in case of an exception during the opening of a connection
This might also be the reason why the FeatureStore test was failing randomly.