add utility for binding flags and building api server clients

This utility provides one stop shopping for a command line executable to get bind the correct flags, build the client config, and create a working client.  The code for usage reduces to something like this:

	authLoader := &PromptingAuthLoader{os.Stdin}
	clientBuilder := clientcmd.NewClientBuilder(authLoader)
	clientBuilder.BindFlags(cmds.PersistentFlags())
	apiClient, err := clientBuilder.BuildClient()

I made the flags congruent with kubectl and used kubectl as an example spot for usage.  This makes use of the auth config work in #2340 and the Bind and Build approach could be used to unify client creation and flag names.

@smarterclayton You've had an interest in this area.
I don't think it is necessary to introduce a Builder type.  
You can do this in an interactive client:
```
apiClient, err := clientcmd.NewFromPersistentFlags(cmds.PersistentFlags())
if os.IsNotExist(err) {
    apiClient, err := clientcmd.NewFromPrompt(cmds.PersistentFlags())
}
if err {
  fmt.Println("Could not make a client", err)
}
```

For the case of a non-interactive client things simplify to:
```
apiClient, err := clientcmd.New()
if err {
  fmt.Println("Could not make a client", err)
}
```

This makes non-interactive client code more concise, and I expect there will be more non-interactive clients than interactive ones.
Even for interactive clients, I find it preferable, in terms of readability, to get forego introducing a new type and gain a few more lines of error handling (which will be familiar to any go programmer.)