TODO:
- action capturing? middleware? woud need to give names to updates (better for lenses?)
- react stuff
- support subscribeToPatches for non root cursors?
- cache lens pure getters?
- async lens actions as flows?
- subscribe for lenses? (would be the same as subscribing for its inner cursor actually)