This diff introduces a new react context that addresses encrypted media caching. The cache has two layers:
- in-memory for quickly mapping holder -> URI to cached resource. We cannot fully rely on it so it also reaches the underlying layer each time, but this operation is fast and avoids more costly operations.
- persistent, based on filesystem, implemented in subsequent diff.
The cache automatically maintains its size and keeps it below the limit. I set it to 100MB but it can be adjusted if needed.
Public interface exposes only two methods: get and set.