[native] Create and upload backup compaction
Summary:
Update the JS and Rust code to upload sqlite backup compaction. First Rust saves the encrypted user keys data to a file and schedules a C++ code the to also save the database compaction. After both of these are done it uploads them to the backup service. If all operations succeed the JS promise is resolved otherwise it's rejected.
Depends on D10858
Test Plan: Click the test button in JS, make sure the backup is uploaded to the backup service and files are removed. [with later diffs] tested that the backup can be restored. Tested that errors are propageated to the JS promise.
Reviewers: marcin, bartek, kamil
Reviewed By: marcin, kamil
Subscribers: ashoat, tomek
Differential Revision: https://phab.comm.dev/D10859