Fix a missing lock in the fake etcd client.
Merge pull request #2108 from brendandburns/fix

Fix a missing lock in the fake etcd client.
hack/local-up-cluster fails to even launch apiserver

--machines was removed but still referenced in hack/local-up-cluster.
This is not a total fix, but at least allows the apiserver to start.
Merge pull request #2110 from smarterclayton/local_up_cluster_fails

hack/local-up-cluster fails to even launch apiserver
Define a mapping between REST resource name and kind/apiVersion

Allows clients to abstractly map user input to generic resource
paths as per docs/api-conventions.md
Introduce ObjectConvertor for conversion to known API versions

Will allow clients to transform internal objects to a version
suitable for external output.
Return the Kind of the object with the RESTMapper
Add runtime.ObjectConvertor to RESTMapper
Allow 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
Refactor Get and Describe to allow extension of types

Get should use ResourceMapper, allow Printer to be abstracted,
and extract Describe as *Describer types.
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
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"
local-up-cluster: terminate all processes on SIGINT
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