[Fix] Bugzilla #18245 - System.Runtime.MemoryCache.GetValues() throws Lo...

...ckRecursionException with expired items

- GetValues() calls MemoryCacheContainer.GetEntry() which now gets an EnterUpgradeableReadLock needed by ExpireIfNeeded()
- Added a test case