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.
> Shouldn't this be f.Client(cmd,mapping)? I don't think you need to look at the builder here.

The types are not directly compatible.  The clientFunc needs to return a client.RESTClient, but the Factory.Client() returns a kubectl.RESTClient.  All client.RESTClients are kubectl.RESTClients, but not the other way around.