Proposal: v1beta3 API overhaul

Speculative change for some items from #1200:

* Metadata that applies to resources is split from APIMetadata on non-resource API objects
* Metadata is a sub field of objects
* Labels are on Metadata
* Pod current and desired state is split
* Name is used for pods instead of ID (UID is part of metadata, Name is part of resource) for idempotent creation #148 and #1216 
* PodTemplate is a Metadata carrying object as per #170
 * If replicationController gave way to a generic "replicator", then pod template could be both a nested struct and a real resource.
* A ScheduledPod and ScheduledPodList is what the kubelet sees as per #860
* Non-schema'd k/v values on Metadata as `Config` (better names welcome) as per #1201

Not changed yet:

* ReplicationControllers
* Services

EDIT: Moving to higher bandwidth document here: https://docs.google.com/document/d/1E_HNsbyocweD9zJHXbz5Xb9XPwBqvDnLHhGeBq15FlI/edit?usp=sharing
```
{
  "kind": "pod",
  "status": {
    "status": "waiting",
    "hostIP": "172.34.56.1"
  }
}
```

Doesn't seem horrible.

----- Original Message -----
> >  type Pod struct {
> > -	JSONBase     `json:",inline" yaml:",inline"`
> > -	Labels       map[string]string `json:"labels,omitempty"
> > yaml:"labels,omitempty"`
> > -	DesiredState PodState          `json:"desiredState,omitempty"
> > yaml:"desiredState,omitempty"`
> > -	CurrentState PodState          `json:"currentState,omitempty"
> > yaml:"currentState,omitempty"`
> > +	TypeMeta `json:",inline" yaml:",inline"`
> > +	Metadata ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
> > +
> > +	// Spec defines the behavior of a pod.
> > +	Spec PodSpec `json:"spec,omitempty" yaml:"spec,omitempty"`
> > +
> > +	// Status represents the current information about a pod. This data may
> > not be up
> > +	// to date.
> > +	Status PodStatus `json:"status,omitempty" yaml:"status,omitempty"`
> 
> I'm not satisfied with this.  I don't really have a better answer yet, but I
> feel like there must be one.
> 
> I don't think we should change the name of PodStatus unless we have something
> compellingly better. PodStatusString does not fit that for me.
> 
> I need to move on for a few hours, but I want to come back to this.
> 
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/GoogleCloudPlatform/kubernetes/pull/1225/files#r18057828