Moved inventory caching logic into its own InventoryCache class. Inventory interface not impacted by this change