Services decoupling

Cherry picks the de-coupling changes in #955, and fixes review remarks:
- left over test clause for $policy->roleId value
- ctor description on LimitationService
- split FieldTypeService into SPI part and API part so SPI part can be moved to Helper and cleanly used to get SPI FieldType internally, removing the internal ->buildFieldType function
BC break. I know the method is noted `@access private` but, should we at least throw an exception?