* fix(maven): determing properly closed ranges
A Maven range like [1,2) contains various (usually pre-release) versions of the 2.x line.
By Maven definition the smallest possible 2.x version is 2-alpha, so a properly closed range that only allows 1.x versions
would be [1,2-alpha). This is now detected and properly advanced.
* Review Feedback Vol. 1
* Do not coerce as that will be fixed by #38895
* Ignore uncoverable if condition coverage
* Extract constant
* Review Feedback Vol. 2
* fix(maven): determing properly closed ranges
A Maven range like [1,2) contains various (usually pre-release) versions of the 2.x line.
By Maven definition the smallest possible 2.x version is 2-alpha, so a properly closed range that only allows 1.x versions
would be [1,2-alpha). This is now detected and properly advanced.
* fix(maven): normalize both sides of version comparison
Without this a leftValue of v3 is incremented to 4 and then compared to v4.
* fix(maven): do not loose the v-prefix of versions in range handling
If versions of a project always start with a v prefix, this was lost when Maven ranges were involved.
The coerce and increment methods stripped the v away and it was never added back in.
* Properly fix underlying problem and make PR standalone
* Add missing coverage
* Remove unused callback parameter
Moves datasource, manager, platform and versioning code from lib/ into new lib/modules/
BREAKING CHANGE: External tools must update paths to datasource, manager, platform and versioning