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.
Merge pull request #680 from mfojtik/kube_env

Allow to set global KUBERNETES_PROVIDER env var
Merge pull request #689 from Sarsate/salt-kubelet-dir

Set kubelet user home directory to /var/lib/kubelet
Merge pull request #678 from brendandburns/fix

Add some initial validation logic.
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.
Merge pull request #571 from lavalamp/master

Decode/Encode everywhere
Merge pull request #682 from brendandburns/proxy

Add support for stopping a proxier.
Revert "Add support for stopping a proxier."
Merge pull request #693 from GoogleCloudPlatform/revert-682-proxy

Revert "Add support for stopping a proxier."
Fixing golint warnings
Merge pull request #695 from danmcp/fix_golint_warnings

Fixing golint warnings
Revert "Revert "Add support for stopping a proxier.""

This reverts commit 19beaf71b576b557f65960ec35086b9580a91221.
Fixing typo
Merge pull request #698 from danmcp/fix_typos

Fixing typo