Split out scalac compiler plugins
We have essentially two compiler plugins in Mill which we currently build as one:
- we don't require
overrideon overriddendefs andvals and special handlemill.moduledefs.Cacherinstances - we encode the ScalaDoc of targets as annotation
mill.moduledefs.Scaladoc, se we can later extract and re-use them inmill inspect
Those are currently packaged in one ordinary Scala artifact mill-moduledefs based on Scala binary version.
Instead, they should be packaged for the full Scala version, to avoid conflicts.
Also, because of their packaging, they are currently not really usable outside of Mill, which makes developing external Mill plugins a bit more inconvenient, as e.g. the scaladoc encoding would be useful for external plugins too.
Contrary to the fact, that these modules change quite seldom, they need to be (re-)released whenever new Scala versions come out.
I suggest, to make them standalone project with their own release cycle and well defined compatibility scheme, so we can use them in Mill accordingly.