Only allow semver versions in Version

Functions in Version that previously raised on invalid versions
or requirements now returns an error tuple.
Simplify Version interface

* Remove the validation functions in favor of parsing functions returning
error tuples.
* `match?/2` and `compare/2` only raises on parse errors, if given already
parsed version and requirement they will not raise.