A version object and comparator for ordering.
Versions are dot delimited positive integers.
3
2.1
2
2.0.3
2.2.2.2.2
1.12345.2
Versions are constructed as strings, and if they contain invalid characters,
then the Version(String) constructor will throw a RuntimeException.