The point of this code is to introduce stateless `olm` interface shared across all platforms, which is stateless:
- on native we have `CryptoModule` which takes care of each action and persists state
- on web there is ongoing @michal's work to achieve the same ([project](https://linear.app/comm/project/[tab-synchronization]-move-cryptostore-operations-to-shared-worker-d86b8dc7215b)).
This will allow us to:
- use `olm` API from `/lib` (we can also expand it to `/keyserver`)
- move code like [peerToPeerMessageHandler](https://github.com/CommE2E/comm/blob/0f6b3d510c4141beda5aaf0fedd4f7b78ccdfa70/native/handlers/peer-to-peer-message-handler.js#L12) to `/lib`
- completely move taking care of state/transactions/atomicity to a different place and from a business logic perspective only call methods
Right now, on web it will cause some code duplication with [OlmSessionCreatorContext](https://github.com/CommE2E/comm/blob/0f6b3d510c4141beda5aaf0fedd4f7b78ccdfa70/web/account/account-hooks.js#L406), but after [ENG-6462](https://linear.app/comm/issue/ENG-6462/browser-tab-synchronization) this context won't have any state and we can remove it and just call methodsuse this API.
This also helps @michal to implement moving responsibility to worker - right now app still works with context and whene everything is ready we can just "flip-the-switch" to use this API".
This apporroach was discussed with @michal, @tomek, @tomek and @marcin.
Depends on D11110