Timebox the preview type determination logic

The preview metadata reading logic is moved into a new component,
PreviewDataProvider.
Each call to a content provider is proxied and cached per URI by a
PreviewDataProvider$UriRecord so the provider calls are not duplicated.
Content preview classes are modified to accept some of the data
asynchronously (i.e. after the UI was created):
 * FilePreviewUi allows the first file name to be provided later;
 * UnifiedImagePreviewUi and FilesPlusTextPreviewUi allow preview
   metadata to be updated later.

Bug: 280237072
Test: Manual testing
Change-Id: I92447f6d34a781bb65ae92b9447ee51a7ffc685e
13 files changed