This was prompted by an issue over at MELPA, where they were having trouble packaging stable versions of erlang-mode due to Erlang’s odd version-strings: https://github.com/milkypostman/melpa/issues/2553. So with this patch, 'OTP-18.0.5' is valid and parsed as '(18 0 5). Other changes in behavior: - “.” can be used as a priority separator. This seemed appropriate since Emacs allows changing of `version-separator' to strings other than “.”, and in such cases “.” might be used to mark priority. - The docstring said “.5” was invalid, when it actually was. I’ve made it explicitly valid, and added tests for it. - The docstring said “22.8X3” was invalid, when it actually was; it got parsed as '(22 8 24 3). I’ve made it really invalid. - I’ve made strings like “alpha3.2” valid, and parsed as '(3 2 -3).