Some cleanups to in-memory ModuleComponentRepository caching

- Split DependencyMetaDataCache into separate artifacts and metadata cache classes
- Use 2 separate metadata cache instances, one for local and one for remote access
- Renamed a bunch of classes to InMemoryCache*
Purged a few todos
Unit test for RepositoryChainArtifactResolver
Refactored RepositoryChainDependencyResolver for testability and added unit tests
Cleanup a few more todos
Extracted ResourcePattern base class