Generic implementation of version comparison.
 
Features:
 
 - mixing of '-' (dash) and '.' (dot) separators,
- transition between characters and digits also constitutes a separator:
     1.0alpha1 => [1, 0, alpha, 1]
- unlimited number of version components,
- version components in the text can be digits or strings,
- strings are checked for well-known qualifiers and the qualifier ordering is used for version ordering.
     Well-known qualifiers (case insensitive) are:
     - snapshot
- alphaor- a
- betaor- b
- milestoneor- m
- rcor- cr
- (the empty string)or- gaor- final
- sp
 Unknown qualifiers are considered after known qualifiers, with lexical order (always case insensitive),
- a dash usually precedes a qualifier, and is always less important than something preceded with a dot.