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.
I think here you're relying on hash-order evaluation of the keys to determine which key to return if you are given multiple keys that match.  So for the CentOS 6.5 case you could return either centos-6.5 or centos-6.  We should really somehow be more explicit here.  The right thing to do is probably to return the most specific match.  That might be hard, if its difficult to do that, I'd actually prefer to raise an exception if you get multiple matches and then solve that problem the right way at some future date.   If we ship with hash-order evaluation it becomes hard to fix that in the future without a breaking change.

Arguably this whole thing should have been written with an array of tuples rather than hash key, value pairs so that the user could control iteration, but that ship probably sailed.