Update the ordering algorithm to semver 2.0.0.

The Ord impl of Version refered to the algorithm in release candidate versions of semver. [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html) says, "Build metadata SHOULD be ignored when determining version precedence."

Note that Version's `le` is not "less than or equal to" now, since `lt` ignores build metadata. I think the new ordering algorithm satisfies strict weak ordering which C++ STL requires, instead of strict total ordering.

BTW, `a || b || ... || x`-style code is better or idiomatic in Rust than `if a { return true; } if b { return true; } ... return false;`-style ones?