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
What will happen if you reach the end of the loop?