Add ~x.y.z and ^x.y.z parsing

Yeah, I guess really it should be in the docs here, which can be linked to
once the registry is actually a thing