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.
Better Mix errors when version or requirements are invalid
Only allow semver versions for mix projects
Mix error messages should be capitalized
Merge pull request #2028 from ericmj/version-semver

Enforce semantic versioning