Change cache mutex to sync.RWMutex

A small tweak to the cache mutex that could help performance. Multiple reads to the cache don't need to exclude each other. Let the lock be held by an arbitrary number of readers or a single writer. Now once the cache is fully primed, there won't be any blocking.