std: Add some implementation of common traits

- semver::Version is now Eq, Ord, and Hash
- Path is now PartialOrd and Ord
This looks pretty straightforward and I think that we should be able to rely on the order for an enum as "smallest listed first" as other types like `Option` depend on it as well.