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.
One of the issues today is keeping the flag names consistent across multiple different commands.   That means that a BindFlags method is still required (or at least a call to create the flags).  So we're looking having two calls no matter what we do.

By having an object holding that state information (the builder), we avoid having two discrete calls
    clientcmd.BindFlags(cmd.PersistentFlags())
    clientcmd.Client(cmd.PersistentFlags))
that rely upon having two different methods being called with matching arguments.  This is especially useful when you look at the common kubernetes usage that has methods trying to build clients relatively removed from the the point where the flags are bound.