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.
Raising an exception on multiple matches would make sense for the time being. Do you think that should also be done on an exact match? Currently <code>value_for_node</code> explicitly checks for an exact version after this method runs, but before returning the match found in this method.

So should an exception be raised if the method is called like the following:
```ruby
value_for_platform({
  "mysuperawesomeplatform" => {
    "1.0" => "1.0 specific value",
    ">= 1.0" => ">= 1.0 specific value"
    }
}
)
```