Refactor internal API for Services to match v1beta3

First commit is services (working unit and integration).
This TODO is no longer valid. It was awkward to put it into ServiceSpec, but you're removing it from there.

It is usually assigned to be 0 by the master, regardless of what the user specified, except in the case of an external load balancer, in which case it is set to the service's port.  I think the idea was that the proxy would just watch the spec. 

Additionally, if the proxy port isn't in the spec, it won't be stored in etcd, and it needs to be set in the status somehow. (I need to look at the rest of this PR to see whether it already does that.)

Since it's not really dynamically allocated, we could simply treat this as a smart default value, in which case it would go in the spec. We'd then want to honor values explicitly set by the user, however, instead of clobbering them. Some users have indeed asked for just that, since services v2 broke their ability to do this without implementing the full-blown external load balancer functionality.

@thockin WDYT?