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.

To be idiomatic go, this function should be:

```
func (info Info) String() string {
  return fmt.Sprintf("version %s.%s, build %s", info.Major, info.Minor, info.GitCommit)
}
```

And it should be used like this:
```
fmt.Printf("Kubernetes %s\n", Get())
```

This takes advantage of the Stringer interface to tell Printf how to print this object.