Serialize using mapstructure conversion instead of JSON marshalling.
These changes remove the JSON encoding/decoding steps that are performed during the serialization of ini and dotenv files. This roundtrip loses type information during the transformation which causes values to be incorrectly converted to the JSON marshaller defaults (int becomes float64, bool becomes string, etc, etc). In place of this JSON encoding, the mapstructure library allows for a direct conversion between the Metadata struct and map[string]interface{} needed to leverage the stores.Flatten and stores.Unflatten functions.
In addition, this adds mapstructure tags to the metadata structures to allow backwards compatibility with the JSON encoding.
Resolves #879 & resolves #857
This is a re-submission of @acastle's #1009 - with mapstructure updated to v1.5.0 and unused imports removed - applied to getsops/sops/main HEAD (previously #1338).
If following commits look okay, I'll squash and add sign-off per devstein request.