[Segment Cache] Use LRU to manage cache data (#73486)
Based on:
- #73434
---
This implements an LRU for data stored in the Segment Cache.
For now I've hardcoded in a cache size of 50mb, but as a follow up, we
should look into creating a dynamic limit based on device memory
constraints.
Segments and Route entries are managed by separate LRUs. We could
combine them into a single LRU, but because they are separate types,
we'd need to wrap each one in an extra LRU node (to maintain
monomorphism, at the cost of additional memory).