Auto merge of #4562 - SimonSapin:btree-manifest, r=matklad
Make manifest serialization deterministic
Fixes #4326
`cargo package` (and so `cargo publish`) parses a crate’s `Cargo.toml`, makes some modifications, and re-serializes it. Because the `TomlManifest` struct uses `HashMap` with its default `RandomState` hasher, the maps’ iteration order changed on every run.
As a result, when using `cargo vendor`, updating a dependency would generate a diff larger than necessary, with non-significant order-changes obscuring significant changes.
This replaces some uses of `HashMap` with `BTreeMap`, whose iteration order is deterministic (based on `Ord`).