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.

The problem of temporarily unavailable manifests also exists on startup (races between different sources starting at different times) - and in protracted partitions from etcd.  Caching the last known good configuration state may still potentially miss a volume allocation, so it seems that some volume reconciliation loop is necessary.

As a related note, we would eventually like to support quasi stable volumes across pod deletes (to allow for moves to occur on stopped data) - in those cases we likely would want a volume type that is explicitly garbage collected within a policy window, so we can reasonably delete a pod and invoke a side channel API to move those volumes.  Having the volume reconciliation loop be modeled helps deal with those kinds of edge cases.