This diff involved moving selectFromGalleryAndUpdateThreadAvatar from EditThreadAvatarProvider to avatar-hooks.react.js.
- This allows us to better decouple the avatar providers and hooks. The providers are an entity(user/thread)-specific, but platform-agnostic interface b/w client and keyserver, whereas avatar hooks are platform-specific implementations. The coupling between providers and hooks made things difficult to work w/ when dealing w/ implementing image avatars on web.
- Previously we had hooks which were "functions" of provider state which itself was a "function" of hooks. This diff starts to enforce the idea that hooks are "downstream" of providers.. which makes things easier to reason about.
- selectFromGallery functionality is specific to native where we launch the image gallery programmatically and process the media selection. On web, we "virtually" click on the <input> to launch file selection, and then handle selected media from onChange callback... so things aren't as "sequential."
NOTE: This is the "thread avatar version" of D8318.