Implemented `~` according to #643 and used the following versions
as a test case as defined by @Seldaek:
* "~1.2.3.4" = ">=1.2.3.4 <1.2.4.0-dev"
* "~1.2.3" = ">=1.2.3 <1.3.0-dev"
* "~1.2" = ">=1.2.0 <2.0.0-dev"
* "~1" = ">=1.0.0 <2.0.0-dev"
Refs #643