add SessionAffinity type to ServiceSpec

This PR is the first step for enhancing the load balancer in the service proxy to support sticky sessions - Issue #2867.  This type will be used in enabled through the service config json/yaml.  
JSON encode an omitempty string omits the field in the output (because "" is empty).  Since we don't use empty string as a constant (but default to None), there is no difference in output JSON or internal logic between using nil and using ""+omitempty, and we use omitempty consistently elsewhere.

Or maybe I misunderstand the argument

> On Dec 30, 2014, at 3:31 PM, Brendan Burns <notifications@github.com> wrote:
> 
> In pkg/api/types.go:
> 
> > @@ -606,6 +617,9 @@ type ServiceSpec struct {
> >  	// ContainerPort is the name of the port on the container to direct traffic to.
> >  	// Optional, if unspecified use the first port on the container.
> >  	ContainerPort util.IntOrString `json:"containerPort,omitempty"`
> > +
> > +	// Optional: Supports "ClientIP" and "None".  Used to maintain session affinity.
> > +	SessionAffinity *AffinityType `json:"sessionAffinity,omitempty"`
> Nil pointer is better because json defaulting rules are cleaner. Omitted field becomes nil, not empty string. Brendan
> …
> —
> Reply to this email directly or view it on GitHub.
>