Refactor internal API for Services to match v1beta3

First commit is services (working unit and integration).
This goes back to the discussion (the result of which I forget) about whether ObjectMeta and TypeMeta would be embedded fields or named fields.