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).
Fix #663

Return all healthy minions instead of only returning the first several
healthy minions. Without the PR, if the first minion failed with health
check, the machine list is empty, thus GET /api/v1beta1/pods failed
with code 500
Make file error logging edge triggered to reduce log spam.
Add some initial validation logic.
Cleanly delete service without endpoints key

If a service is deleted before the etcd key corresponding to its
endpoints has been created, a 500 error is returned (etcd key
not found).  Instead, key not found should be ignored silently.

There is a potential race condition with the controller creating
endpoints after the service has been deleted which a cleanup task
should handle in the future.

Closes #684
Merge pull request #681 from brendandburns/noisy

Make file error logging edge triggered to reduce log spam.
Merge pull request #679 from dchen1107/minionlogs

Fix #663
Merge pull request #685 from smarterclayton/error_on_empty_service

Cleanly delete service without endpoints key
Allow to set global KUBERNETES_PROVIDER env var
Fix handling of default cpu shares.
Merge pull request #687 from rjnagal/master

Fix handling of default cpu shares.
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.