list packages rather than repos

This small edit is a significant conceptual change.
Instead of listing one entry per dependency repo,
we list one entry per disjoint import path tree.

This means we can list the same repo more than once
in the manifest, but copy less code into the local
workspace. This happens when a repo has several
packages, not all of which are dependencies.

For example, if the project depends on packages A
and B in repo R, we now list both R/A and R/B, even
though they're in the same repo. However, if the
project depends on two packages P and P/Q, we still
list only P.