SettingsProvider enhanced cache

Instead of one generation tracker per table, we now use one generation
tracker per setting.

Change overview: https://docs.google.com/document/d/1Hoqnyu-zdqlcqoQPcan2cuV45pXxh_dLtI0kOsOVuX0/edit?resourcekey=0-UoWA1aosEP-04skWe3Ylsw

The testSettingsValueConsecutiveRead now performs 10x better because the
update of one setting doesn't invalidate the caches of other settings.

+ Changed server caching behavior so that nothing is cached until a
  setting is queried.

+ Also moves cache check to before the readable check to further reduce
  read-access time, since if a setting is cached, it must be readable
  for the caller process.

BUG: 228619157
Test: atest com.android.providers.settings.GenerationRegistryTest
Test: atest SettingsProviderTest
Test: atest SettingsProviderPerformanceTest
Test: atest android.provider.NameValueCacheTest
Change-Id: Ie519dadadc13c7211a0f1f5de53f498dfc6edf77
6 files changed