Unify compiled dependencies of old and new crate #41
Description
Currently, we just disambiguate the crates compiled as dependencies of the old and new crate version. This has some issues, however: unchanged types from the two copies of a dependency aren't recognized as the same type, and various smaller issues appear.
A clean solution would be to determine the dependencies of both the old and the new crate, and to compile only one copy of each crate, preferably in a place where we don't interfere with any other tools and can reuse a maximum amount of work already done by cargo for previous compilations. After that, we can proceed to recursively determine matching crates and check them, until we reach the root crates. At this point we'd have all information needed to determine the change category of unchanged types from different crates.