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.
Hrm.  Usually you create an object and then bind its params with *VarP, and then use the object you bound to get a client.  So it feels patterny, but that because it's a pattern :)

You have to bind before you can create a client, and you can't read the values you bound until after flags are parsed.  The example doesn't show that and it should.  So it's always a two step process.


> On Nov 25, 2014, at 7:19 PM, Eric Tune <notifications@github.com> wrote:
> 
> In pkg/client/clientcmd/doc.go:
> 
> > +You may obtain a copy of the License at
> > +
> > +    http://www.apache.org/licenses/LICENSE-2.0
> > +
> > +Unless required by applicable law or agreed to in writing, software
> > +distributed under the License is distributed on an "AS IS" BASIS,
> > +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > +See the License for the specific language governing permissions and
> > +limitations under the License.
> > +*/
> > +
> > +/*
> > +Package cmd provides one stop shopping for a command line executable to bind the correct flags,
> > +build the client config, and create a working client. The code for usage looks like this:
> > +
> > +    clientBuilder := clientcmd.NewBuilder(clientcmd.NewDefaultAuthLoader())
> Builder feels to me like using a pattern for the sake of using patterns.
> 
> —
> Reply to this email directly or view it on GitHub.
>