adding dependency on josh at v0.1.
link josh as a test dependency
refactor the main class so that there's a reasonably well exposed method that acts like the cli but without execing and without halting the jvm on errors.

this is essentially meant for testing access.  an alternative would be to drive the separation between command parameters and implementation details... but really, i have no reason to be interested in having multiple implementations of params provider interfaces or etc; at this point the practical utility of that would be somewhere around using mocks, and there really isn't any call for that.
create a new integration test to cover the issue with reviving an empty working dir when a git dir is still available.
disable notices from proguard.  it just overwhelms my screen with uninteresting suggestions of every constructor with a single string arg in the entire jdk runtime library.

if i could ask it to dontnote on specific known classes, i would, but that doesn't appear to be a thing.
Calmly report and exit when altering a version encounters dirty files in a dependency's working tree.
Exit with success code when requesting alteration of a depedency version to what you already have.
shifting dependency on lib/josh to version v0.2.
oh, good, we have two WithCwd classes on the path now.

I AM A MATURE AND LEGITIMATE DEVELOPER.  I SWEAR.
develop a new (and failing) test to shine a light on issues with recursive submodules.
support use of mdm when in a submodule already (or generally, working in a project repo that has a relocated git data dir), and append workarounds to the changelog.

I can't promise this will support all possible relocations of the git data dir away from the git work tree dir -- it's an almost arbitrarily powerful feature of git -- but this should cover the most common cases.
Merge branch 'master' into stable
release version v2.17.1