Make sure that expand(Coordinate) does not forget exclusions

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Refactor findVersion()

The findVersion() method is supposed to traverse the
<dependencyManagement> and also the parents' <dependencies> and
<dependencyManagement> sections to find the appropriate <version> tag
for dependencies whose version is not set in the current project's
<dependencies> section.

But the method itself was conflating two concepts: querying the
dependencyManagement information, and returning just one version.

For exclusions, we require the first concept: to query the
dependencyManagement information (because Bio-Formats' kryo dependency
has exclusions managed that way).

So let's refactor it.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Handle <exclusions> properly

We tried to punt on the issue and just filter dependencies *after*
gathering them.

That did not work, however: if a dependency has exclusions, the
*transitive* dependencies of the excluded ones *also* need to be
excluded.

So let's stop punting on the issue and do it properly.

While at it, heed exclusions declared in <dependencyManagement>
sections as well as exclusions declared in the parents.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>