Remove deprecate code
:override option should override the version requirement
Merge pull request #2028 from ericmj/version-semver

Enforce semantic versioning
Use throw/catch only inside matchspec. Keep to_matchspec/1 and from_matchspec/1 as public
Slightly reword version error messages
Fix build and update CHANGELOG
Fix test suite warnings on 17.0-rc1

Those warnings happen because we need to test basic functionality,
like `nil?(nil) == true` and the Erlang compiler can see this
expression will always work.

We can work around this issue by adding a bit of indirection, like
`nil?(List.first([nil])) == true`.