Use Decode/Encode in etcd_tools
All types stored in etcd are now API objects.

This means I made an api.ContainerManifestList, and added a JSONBase to
endpoints (and changed Name -> JSONBase.ID).
Add /version to server and check it in client.

Will help detect client/version skew and prevent e2e test from passing
while running a version other than the one you think it's running.
Add some initial validation logic.
Allow to set global KUBERNETES_PROVIDER env var
Set kubelet user home directory to /var/lib/kubelet

The kubelet user does not have permissions to create directories in
/var/lib. This sets the home directory to /var/lib/kubelet so that the
directory is made prior to running the kubelet. This matches the
default root directory path (/var/lib/kubelet) and allows kubelet to
us that directory.
Add support for stopping a proxier.
Incorporate new types into versioned api system.

* Made externalize/internalize generic to prevent boilerplate.
* Add fuzz testing.
* All objects pass fuzz tests now.
* This turned up some things we'll need to fix eventually. Left TODOs.
Revert "Add support for stopping a proxier."
Fixing golint warnings
Revert "Revert "Add support for stopping a proxier.""

This reverts commit 19beaf71b576b557f65960ec35086b9580a91221.
Fixing typo
fix misspelling
third_party: update go-dockerclient

math.MaxInt64 represents 8 exabytes, which is a good limit for memory.
Also, this is the type used by Docker, so it's not possible to get any
value bigger than math.MaxInt64 as memory limit (both ram and swap) on a
Docker container.

Relevant discussion at #589 (more precisely,
https://github.com/GoogleCloudPlatform/kubernetes/pull/589#issuecomment-50640605).
Improve testing reliability
Split watch
Split async
Split operations test
Split index
Split interfaces