**IMPORTANT** This breaks compatibility of the file format in 1.x for
json files, due to the version being encoded as a number in json files.
The fix for this is easy, however. One can either use a previous version
of sops in the range [2.0.0, 2.0.9] to edit the file, or one can manually edit
the encrypted file and change the version from a number to a string
Previously we basically hand-converted the metadata struct into a map
which we then passed to the stores. Now, we convert the metadata struct
to a "serialization" struct, which the stores serialize
This patch changes the behavior of `-r` to make it behave like the
encrypt, decrypt or editing mode: it is now a full roundtrip over an
existing encrypted file that decrypts, creates a new data key, encrypts
and encrypts the data key with all master keys. This new mode makes it a
lot easier to rotate data keys without having to edit files.