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.

This is a resubmission of https://github.com/civicrm/civicrm-core/pull/2801 now that the API kernel has been merged into 4.5.