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
Obviously the last `$fieldDefinition` will be used.

In addition this is not resistant to schema identifier not matching any of the field definitions (was not the case previously either). Legacy Stack here generates empty string, and will return empty string as the end result. We should maybe follow the same for individual identifier and generate something by default like is done for URL aliases.

Something for the followup in any case, ok if only field definition selection is fixed here.