excludeDependencies: excludeAll at the project level

```scala
excludeDependencies += "org.apache.logging.log4j"
excludeDependencies += "com.example" %% "foo"
```

In the first example, all artifacts from the organization `"org.apache.logging.log4j"` are excluded from the managed dependency.
In the second example, artifacts with the organization `"com.example"` and the name `"foo"` cross versioned to the current `scalaVersion` are excluded.

I was somewhat torn between being consistent with the way `ModuleID` logic and picking horrible `apply` naming. In the end, I went for consistency. I can get rid of `apply` here since it's only used internally for `substituteCross`.