Implement deployments with pods

Refactor the deployment mechanism to be exclusively pod based. Refactor
the deployment API accordingly. Improve test coverage, and provide the
foundational support for implementing more built-in deployment strategies.
It's distinguishing this as a RESTful method, rather than being a getter.

----- Original Message -----
> > @@ -53,9 +58,15 @@ func deploy(cfg *config) error {
> >  		return err
> >  	}
> >  	if len(cfg.DeploymentName) == 0 {
> > -		return errors.New("No deployment name was specified. Expected
> > KUBERNETES_DEPLOYMENT_ID variable.")
> > +		return errors.New("No deployment name was specified.")
> > +	}
> > +
> > +	var deployment *deployapi.Deployment
> > +	if deployment, err =
> > osClient.GetDeployment(kapi.WithNamespace(kapi.NewContext(),
> > cfg.Namespace), cfg.DeploymentName); err != nil {
> 
> at some point, we should get rid of using `Get*` in methods like this:
> 
> <cite>
> There's nothing wrong with providing getters and setters yourself, and it's
> often appropriate to do so, but it's neither idiomatic nor necessary to put
> Get into the getter's name
> </cite>
> 
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/openshift/origin/pull/382/files#r20183958