Strip out and reconstruct 'SemVer'.

During attempts to write a complete set of special member functions
(according to section 12 of ISO/IEC 14882:1998) for 'SemVer' it became
apparent that previous work created a structure that was hard to work
around.

In the interests of writing more robust code over micro-level
optimisations 'SemVer' has been rewritten in a simpler way.