PhoneCapabilities changes for device capabilities

Change PhoneCapability structure to contain static capabilities for:
* the entire device
* each modem/radio
* each SIM slot

Created SimSlotCapability and SlotType to hold information about
device SIM slot capabilities (separate from SimSlotStatus).

Created ModemFeatures to express modem capabilities as a bitfield
of concurrently supportable modem features.

PhoneCapability has fields for UE categories, bands, access networks,
and modem switching linger time. It also contains a lists of logical
modem UUIDs, SIM slot capabilities, and all possible concurrently
supportable modem features.

TelephonyManager will have an API that returns
* the PhoneCapability for the device
* active set of ModemFeatures

Apps with CARRIER_PRIVILEGE can use these APIs to access all
capabilities of a device (eg. 5G capable, DSDS capable, etc.) and
use them to make decisions based on what the device can support.

Test: atest FrameworksTelephonyTests
Bug: 143238237
Bug: 143238191
Change-Id: I424ef176086d2308a4bf53b2c79407eabafb3178
Merged-In: I424ef176086d2308a4bf53b2c79407eabafb3178
diff --git a/radio/config/1.3/default/RadioConfig.h b/radio/config/1.3/default/RadioConfig.h
index 00585e6..57ff368 100644
--- a/radio/config/1.3/default/RadioConfig.h
+++ b/radio/config/1.3/default/RadioConfig.h
@@ -62,6 +62,9 @@
     Return<void> setPreferredDataModem(int32_t serial, uint8_t modemId);
     Return<void> setModemsConfig(int32_t serial, const V1_1::ModemsConfig& modemsConfig);
     Return<void> getModemsConfig(int32_t serial);
+
+    // Methods from ::android::hardware::radio::config::V1_3::IRadioConfig follow.
+    Return<void> getPhoneCapability_1_3(int32_t serial);
 };
 
 }  // namespace implementation