Until now, `update-file` always returned a ordered set of change-groups
plus the one created by the ongoing request.
A change-group corresponds to a list of changes commited in a single
update-file (file_change table row).
Including the ongoing request change-group on response with increase
load stated causing considerable amount of memmory pressure.
Since this changes are no longer necessary on frontend side, with this
commit we strip the changes list from the ongoing request change-group,
sending back an empty entry with the increased `revn` number.
Until now, a file `data` snapshot was persisted on every file_change
row. That causes a lot of IO load and increase disk usage without
a real benefit.
This commit reduces the snapshot generation; now the snapshot
is persisted every 20 update-file or when a file is not touched
in 3 hours or more.
As a replacement for the current pubsub approach.
It now uses a single connection for multiple
subscriptions (instead of conn per subscription);
has asynchronous publish and uses more efficient
blob encoding for message encoding (the same used
as page storage).