Version fixes

Here are some changes to improve handling of Kubernetes versioning.
1) Now all commands are able to parse a -version flag.
2) Version generation from git is more robust and more complete.

What do you think about calling this "MaybePrintAndExit"? ```version.MaybePrintAndExit()``` seems a bit nicer to me but I don't have a strong opinion.