Introduce a SemanticVersion object

This object represents a single semver version and provides serialisation
into different forms (dpkg/rpm/pep-440).

implements: blueprint pbr-semver
sem-ver: feature
Change-Id: I482e07cce9b65df452d5b9af4c73960df68a141e