Today in a few places we create a `new CountDown(0)`. This is kind of trappy because it will never return `true` from `#countDown()` or `#fastForward()` which risks never completing whatever action needs completing unless the caller handles the empty case specially.

We should refactor the places that do this so that they all avoid creating an empty `CountDown`, instead just handling the fact that the action is already complete:

- [ ] `TransportIndicesShardStoresAction$AsyncShardStoresInfoFetches`
- [ ] `ClearScrollController`
- [ ] `TransportBroadcastReplicationAction#doExecute`
- [ ] `Realms#usageStats`

Once we've done that, we can forbid the creation of an empty `CountDown`.
x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/Realms.java
public static boolean isRealmTypeAvailable(XPackLicenseState licenseState, String type) {
        final LicensedFeature.Persistent feature = getLicensedFeatureForRealm(type);
        if (feature == null) {
            return true;
        }
        return feature.checkWithoutTracking(licenseState);
    }
    @Nullable
    private static LicensedFeature.Persistent getLicensedFeatureForRealm(String realmType) {
        assert Strings.hasText(realmType) : "Realm type must be provided (received [" + realmType + "])";
        if (InternalRealms.isInternalRealm(realmType)) {
            return InternalRealms.getLicensedFeature(realmType);
        } else {
            return Security.CUSTOM_REALMS_FEATURE;
        }
    }
    public Realm realm(String name) {
        for (Realm realm : activeRealms) {
            if (name.equals(realm.name())) {
                return realm;
            }
        }
        return null;
    }
    public Realm.Factory realmFactory(String type) {
        return factories.get(type);
    }
    protected List<Realm> initRealms(List<RealmConfig> realmConfigs) throws Exception {
        List<Realm> realms = new ArrayList<>();
        Map<String, Set<String>> nameToRealmIdentifier = new HashMap<>();