(#14822) Re-evaluate features if they previously were false
Allow features to be re-evaluated each time they are checked, if they
previously evaluated to false. This allows for providers by features to have
dependencies installed during a run and then for the feature state to change
from false to true.
Caching of feature results that were previously true has been kept. Caching of
blocks used to evaluate features remains unaffected and are still run only once.