Move interfaces out into an API jar
Add unit tests that cover the implementations in the api
Update tests for the artifact filter
Embed maven-scm-api and -manager rather than use mojo-executor

This frees us from some of the bugs of the mojo-executor with tighter control
of the scm lifecycle. We also shave a bit of time spent setting up and executing
the mojo. It also allows tests to be written much easier.

This commit also fixes a bug where it was impossible to access releases in
tags with an SCM which did not represent the release information in the
scm url, i.e. subversion tag information versus git.
Allow code style goals to be overridden

This allows a build machine for instance to use the non-failing goals
Prevent build-tools from being deployed

This jar has no function for a deployed plugin. In order to allow this plugin
to be built from its own sources jar, we need to move any build plugins which
required build-tools into a manually activated profile.