[lib] introduce generic StoreOperation type
Summary:
This is some kind of spec for data store. The purpose is to:
- Cleanup by fitting up existing logic into this interface
- Make a "contract" for needed utils for future Data Stores
- I think it's better to use a method from descriptive object rather than calling random util functions
The only problem will be draftStore, which does nto not have those methods (the only thing I can do rn is to create a follow-up task to improve draft operations).
Examples of usage in following diffs.
Depends on D8617
Test Plan: Flow
Reviewers: michal, tomek, atul
Reviewed By: atul
Subscribers: ashoat
Differential Revision: https://phab.comm.dev/D8618