04. Formalize allowed version number formats
Formalize the spec for version numbers as "decimal or normalized
dotted-integer (leading "v" and at least 3 components). (Dagolden)
* It's not clear whether/how to include alpha versions (with underscores)
in the spec as they generally cannot be resolved by the toolchain
* Version comparison for "greater than" must be both possible and fully
described in all possible combinations, as things like Module::Install
need to handle duplicate dependency assertions. For example, part of the
M:I internals silently assert "requires File::ShareDir 1.23". If the user
then manually asserts "requires File::ShareDir v1.24.1" M:I needs to be
able to determine which to keep and which to discard.
* SUPER 1.16 declares some dependencies as the empty string instead of
zero. This apparently causes problems for some part of the toolchain.
We should clarify that empty string (and undef) are not allowed. I
believe the toolchain special cases 0 to mean "any" even if a module does
not define $VERSION, but we should specify that behavior explicitly as