Introduce ProgramInfoCache

ProgramInfoCache will be used in a future CL by BroadcastRadioService to
perform the multiple AIDL client to single HAL fanout of ITunerSession's
"program list update" API.

This CL also addresses a few issues with some of the AIDL classes:
- RadioMetadata.equals() was not defined despite being used by RadioManager.ProgramInfo.equals().
- Added ProgramList.Identifier.isCategoryType() to provide a formal definition of how ProgramList.Filter.areCategoriesIncluded() works.

Bug: 121305828
Test: atest com.android.server.broadcastradio.hal2.ProgramInfoCacheTest
Change-Id: I50befe3b16125a50d494899ba97aa0f9b6d76913
7 files changed