Refactor internal API for Services to match v1beta3

First commit is services (working unit and integration).
I am pretty sure I disagree.  ProxyPort is an implementation detail.  Setting it today will give people the old service proxy behavior they want TODAY at the expense of being more complicated to move to different kinds of Services.  I understand that external IPs are a pain point right now, but I don't think we should expose this as such.