Fix MIME type of non-plain text share intents

Previously we piped the MIME type to sharesheet, which was incorrect.
Also switch to ClipData.Item's coerceToText() method to avoid NPE when getText() is null.

Also pull all the intent creation code into its own class, test it.

Bug: 243447863
Bug: 236932369
Bug: 222640396

Test: atest IntentCreatorTest
Test: Share text copied from Chrome, note that the full correct app list
      comes up.
Change-Id: Ia438a40423f518275fcd8a09f7de23c511b116fa
3 files changed