Push major and minor versions from git

Use the output of "git describe" (which bases it on annotated tags) to define the major and minor versions in the version.Info.

The minor version includes a "+" suffix whenever the version doesn't match a tag exactly, to indicate that modifications exist from that exact version, but it's a good approximation of the version being between X.Y and X.(Y+1)

Tested with a bunch of annotated tags and in cases where the tree is clean or dirty.

(This patchset also includes the patches in #1121, just because I used them to test these... I'll lock this merge until that one has been resolved. Let me know if you'd like me to rebase these without those, that would be possible as there's really no dependency between them.)