Chain async tasks in contacts indexer

Create a chain of CompletableFuture tasks for all the sub-tasks in doing
full update:
- get a list of all contact IDs in AppSearch
- diff them against current contact IDs in CP2
- update Person corpus, which includes
-- remove all unwanted contacts (not applicable here)
-- batch all updated contacts and index into AppSearch (multiple tasks)
- persist latest timestamps after successful completion

Add test that does end-to-end verification of full update by querying
the underlying AppSearch subsysem.

Bug: 221892152
Test: atest AppSearchServicesTests:com.android.server.appsearch.contactsindexer.ContactsIndexerUserInstanceTest#testFullUpdate

Change-Id: I85f75a6ca8ddf8ba82fb9a943af01ef747610656
4 files changed