Only consider tags that look like versions.

pbr has been allowing any tag (e.g. 'fred') to be a version - but fred
is clearly not a version! Since git describe cannot validate versions
for us today, we need to perform the describe calculations ourselves.

In order for this to work on Python3, a missing method __hash__ needed
to be added to SemanticVersion.

Change-Id: I09fa54231e77ae7671aa6f84eb91fd655e49ab25
Closes-Bug: #1356784
Merge "Only consider tags that look like versions."