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.
It's a bit confusing looking at this hash, and scrolling down to look at the relevant tests, and piecing it together. Maybe an explanation of what we're using @platform_hash for in the test here would be helpful.

* Precedence
```
@platform_hash = { 
  "fake_os" =>  { "default" => "bob",
                         ">= 6.0" => "steve",
                         "~> 6.1.4" => "george",
                         ">= 6.2" => "tom"
}
```
Given a platform version of 6.2.10, do we know that "tom" is always returned? e.g. hash key order isn't influencing us? What about 6.1.5? Should be george, right? I think @lamont-granquist has left a related comment

Which makes me think you should order the keys in the hash here numerically at least.