Refactor internal API for Services to match v1beta3

First commit is services (working unit and integration).
It shouldn't after your changes in the other pull.