Move cache provider tests to separate module

This has two benefits:
- The main test suite is a bit cleaner now, and cache provider tests are more isolated.
- The tests now pass, since there was a problem with the cache provider being stored with global scope, which meant that the `MemcacheCacheProvider` was never tested.