Structured access to the output of cargo metadata. Usually used from within a cargo-* executable.
Also supports serialization to aid in implementing --message-format=json-like
output generation in cargo-* subcommands, since some of the types in what
cargo --message-format=json emits are exactly the same as the ones from cargo metadata.