Implements a credentialprovider library for use by DockerPuller.

This change refactors the way Kubelet's DockerPuller handles the docker config credentials to utilize a new credentialprovider library.

The credentialprovider library is based on several of the files from the Kubelet's dockertools directory, but supports a new pluggable model for retrieving a .dockercfg-compatible JSON blob with credentials.

With this change, the Kubelet will lazily ask for the docker config from a set of DockerConfigProvider extensions each time it needs a credential.

This change provides common implementations of DockerConfigProvider for:
 - "Default": load .dockercfg from disk
 - "Caching": wraps another provider in a cache that expires after a pre-specified lifetime.

GCP-only:
 - "google-dockercfg": reads a .dockercfg from a GCE instance's metadata
 - "google-dockercfg-url": reads a .dockercfg from a URL specified in a GCE instance's metadata.
 - "google-container-registry": reads an access token from GCE metadata into a password field.

(cherry picked from commit 0c5d9ed0d21f0ebace1b5bd437077bc6f6e070f2)
Kubelet talks securely to apiserver.

Configure apiserver to serve Securely on port 6443.
Generate token for kubelets during master VM startup.
Put token into file apiserver can get and another file the kubelets can get.
Added e2e test.

(cherry picked from commit 46dcacfa93bfa3a73c7a5b3740c29dfa9440a375)
Don't reference non-existent token file if not GCE.

(cherry picked from commit 67adf6473eb4ff576e743987cccb3158363db2c8)
Only test events on GCE.

(cherry picked from commit 4dbdfd79357e4a656e59ae074201ae335b80a6d0)
Treat unset KUBERNETES_PROVIDER as gce.

Should fix jenkins failure.

(cherry picked from commit 057d78e47108e81b6842ffac0ba22f2adb0f664c)
Add the 0.5.1 release
Add the 0.5.1-dev
Merge pull request #2453 from brendandburns/release-0.5

Release 0.5