Refactor internal API for Services to match v1beta3

First commit is services (working unit and integration).
This is wrong - you should be using what the other internal objects are using.  Unfortunately this means a lot of your code changes are wrong (anything referencing `.Metadata`)