support version constraints in value_for_platform

This allows version constraints like <code>~\></code>,<code>\>=</code>, and others to be used in the keys for <code>value_for_platform</code>

The primary motivation behind this is that CentOS has started tagging their versions with minor versions, like <code>7.0.1406</code>, and it would be far more convenient to just specify <code>~> 7.0</code>.

If a platform has a version that Gem doesn't like, we simply throw it away and move on.
We use raise instead of fail in this project. I don't know how much it matters, but I see no other uses of fail in the codebase.