CRM-14370 - Expose generic CRUD API for Doctrine entities (as APIv4)

Most of the logic is handled by DoctrineCrudProvider, although permissions
are handled by AnnotationPermissionCheck.
Merge pull request #2841 from totten/doctrine-api-kernel-2

CRM-14370 - Expose generic CRUD API for Doctrine entities (as APIv4)