build: Updates (scala, sbt, jgit & config).
Remove SemVer & move Utils.
Version: Restructure the hierarchy, not sure if I'm happy yet.
Move logic out of Main into (new) GitVersionGetter.
build: Migrate from sbt to Maven, for pitest.
Add @ParametersAreNonnullByDefault to (new) root package (object).
Apply a bunch of style fixes.
Utils: Add a few more require methods, with error messages.
Version: Add requires.
Utils: Drop unused require.
Version: Add hashCode & equals to Version (fuck my terse code).
GitVersionGetter: Add optional 'v' to semVerPattern & add a grouping to extract clean name.
test: Add an initial (1 test) GitVersionGetterTest.
Utils#requireNonBlank: Specify that the character is char, so it doesn't get confused with a code point (int).
GitVersionGetter: (Minor) Remove unused import.
GitVersionGetter: Add TODO for tagDistance calculation.
test/GitVersionGetterTest: Fix test data.
Utils: Remove fancy variable shortcuts, for style.
GitVersionGetter: Check that pattern matches before extracting group (sometimes fail, wtf?).
test/GitVersionGetterTest: Add remainding, happy-path tests.