Optimize file cache

Code will frequently have combinations of calls to has() with an immediate call to get() right afterwards if the item is in the cache. The file cache treats these two operations separately, and will perform a file read and unserialize operation for both. 

This patch ensures the file cache remembers the last cache entry it loaded, which speeds up has+get combinations, particularly for very large cache entries.

I've also added an illustrative test to the the performance suite to illustrate the performance gain.