Fix approximate satisfaction issue with constraints that are missing the patch value

This fixes an issue where `~> 1.2` would not satisfy `1.2.3`.

It also addresses an issue where pre-release versions would satisfy constraints which do not contain a pre-release segment.