Parsing version numbers
Convert a version string to an internal representation. The parsed format can be compared using the regular comparison operators.
Safe_exception if the string isn't a valid version
  make_range_restriction x y returns a test for versions where x <= version < y.
parse_expr expr is a test for versions that match expr.
e.g. parse_expr "2.2..!3 | 3.3.." matches 2.3.1 and 3.3.2 but not 3.1.