[lib] Introduce encrypted media types
Summary:
Linear task: ENG-386
Added types encrypted_photo and encrypted_video. The only difference is that instead of uri they contain holder and encryptionKey pair.
Added invariant in several places across codebase to indicate places that will be modified in subsequent diffs and to supress Flow errors
Test Plan: Flow doesn't complain. Web and Native don't throw, it is still possible to send unencrypted media messages
Reviewers: atul, ashoat, marcin
Reviewed By: ashoat
Subscribers: tomek
Differential Revision: https://phab.comm.dev/D7168