Initial framework for external volumes. 

Lays the framework for external volume mounts, preparing for 
persistent disks and other volumes.

Currently, it only supports host directory mounts.

Modifies the API to support host directory mounts from Volumes
instead of VolumeMounts.

I think we have a general problem that this is exposing.  The kubelet does not keep a copy of the ContainerManifest anywhere persistent except etcd.  When the master wants a pod to go away, it removes the record from etcd.  If Kubelet ever goes down after a pod has been removed from etcds, it loses the in-memory state and does not have etcd.  It can still observe the active state on the system, and parse that backwards into a manifest, I guess, but it will be very painful to back-track things like bind mounts.

TL;DR I'm still not convinced that we can be purely stateless.  I sort of feel like we should copy and checkpoint manifests when we start them up so that we can recover the intended-actual state (as opposed to the desired state and the actual state).  or we can bit the bullet and say that Kubelet should always be able to clean up, no matter how bad the code to do so is.