Fix comparison of semvers with a different "length"
Don't resort to try-except for Py version checking and add __repr__
Re-work the tests

This is much more flexible than before (especially comparing the versions) and
considers almost any case.