feat: add multiple-location support
Cargo supports specifying multiple locations for a dependency.
Specifically, a git or path location can coexist with a version
location. In these cases Cargo will use the version to refer to a
registry when the crate is published, or otherwise use the version as a
constraint against a local crate.