Add spf13/cobra for kubectl

Conflicts:
	Godeps/Godeps.json
kubectl: kubecfg rewrite for better modularity and improved UX

Conflicts:
	hack/config-go.sh
	hack/test-cmd.sh
Fix typo "replicationContollers"
Fix typo in kubectl
Add --no-headers to kubectl get
add kubectl.sh
bash completions for kubectl

Support pre command flags:
--api-version=
-a, --auth-path=
--certificate-authority=
--client-certificate=
--client-key=
--insecure-skip-tls-verify=
--match-server-version=
-s, --server=

And commands:
get
describe
create
update
delete

Tries to be smart about things like

kubectl get -o template  requires a template file

It also tries to accept both sigular and plural versions of all
resources.  Even though it will only complete to the plural version.
Replace custom proxy with httputil.ReverseProxy for kubecfg/kubectl.

Fixes #1149 - kubecfg proxy "411 Length Required" error on POST/PUT.

Conflicts:
	cmd/kubecfg/kubecfg.go
	pkg/kubecfg/proxy_server.go
[REBASE] godeps
Handle auth files with BearerToken sections.

Conflicts:
	cluster/gce/util.sh
	cmd/e2e/e2e.go
	cmd/kubecfg/kubecfg.go
	pkg/kubecfg/kubecfg.go
Fix kubectl flags for vagrant
Kubectl namespace support
Add unit test for load namespace info
Different message on display of namespace versus setting namespace
Add support for creating a bulk of resources via kubectl apply

Conflicts:
	pkg/kubectl/cmd/cmd.go
Allow Create/Update/Delete kubectl commands to handle arbitrary objects

* Ensure kubectl uses abstractions from other parts of Kube
* Begin adding abstractions that allow arbitrary objects
* Refactor "update" to more closely match allowed behavior

Conflicts:
	pkg/kubectl/cmd/delete.go
	pkg/kubectl/modify.go
	pkg/runtime/scheme.go
Refactor Get and Describe to allow extension of types

Get should use ResourceMapper, allow Printer to be abstracted,
and extract Describe as *Describer types.

Conflicts:
	pkg/client/fake_pods.go
	pkg/client/fake_services.go
	pkg/kubectl/describe.go
Add --template and --templatefile options for more flexibility

Allow directly entered templates for scripting flexibility.
Changes --output=template to mean "string" and --output=templatefile
to mean "from file"
kubectl should error when namespace doesn't match file for update

A user who runs `kubectl update -f foo.json` where foo.json is a
resource in a namespace that does not match $(kubectl namespace)
may not intend to update the resource in that other namespace.

For now, return an error when the user does not explicitly set
the namespace via the CLI:

    # foo.json in 'one', current is 'two'
    $ kubectl update -f foo.json # FAILS

    $ kubectl update --namespace=one -f foo.json # SUCCEEDS
Display an external version of the object for --output

Use the version of the API the RESTMapper prefers (currently)
Lock the output format version based on user input
Like update, allow CLI create to clear resourceVersion