Port in more of pep440

The release portion of semver is great, but then the rules about
pre-releases get very vague - basically, "whatever you wanna do after
the - is great". But ultimately, a large portion of the benefit is
about clearly commuicating what is happening. So restrict pre-release
to a subset of the rules for pre-release rules in PEP440. Essentially,
everything here is valid PEP440, but PEP440 allows things that this does
not.