Ensure global cache handlers are used properly (#74626)
Currently any cache handlers configured under the global symbol are
overridden by the default built-in cache handle unexpectedly. The
default built-in cache handler should only be used if no user configured
one is available and no global symbol provided one is available.
This also fixes `expireTags` not being called on configured cache
handlers at all due to that part not being wired up.
Regression tests for the above are also added to ensure this is behaving
as expected.