Add apidoc handler for controllers registered as services

This includes a refactoring of the original handler to an abstract base class containing most of the logic. (+1 squashed commits)

Squashed commits:

[70b7af5] Add controller that can be registered as a service

Add common interface of required functions all controllers
Factor out common code for normal and serviced controller

Squashed commits:
 * Factor out common code for normal and serviced controller tests
 * Add abstract base controller for normal & serviced controllers

Avoid a lot of code duplication in both controllers
Add test that apidoc handlers do not touch unsupported methods
Use the logger to issue a warning when the default redirectTo method is used

Using the default redirectTo method is quite slow and inefficient,
because it has to do a search over all defined routes to find the right route name.
Add compiler pass to automatically inject dependencies of a service exposed controller

New DI tag radrest.controller that auto-injects frontend manager, logger and router.
The service id is also injected if the constructor is not overridden
Add documentation for controller as a service
Update best practices to get frontend manager in class based controller

It is a better idea to just override getFrontendManager() instead of hacking setContainer() to set the frontend manager
Documentation: routing for class based controllers

Add routing definition for class based controllers, for parity with the section on controllers as a service.
Change methods getRouteName and getSerializationGroups

Add method getRouteName that makes overriding even easier

Move duplicated code in RadRestController & ControllerServiceController to AbstractController

Modify getSerializationGroups method to use same pattern as getRouteName

Returning multidimensional arrays looks a bit strange, much better to pass the action as a parameter,
and get the serialization groups as return value.
Make APIDoc handlers and CompilerPasses easier to extend with custom classes
Add tech docs about controller base classes, and warning about getRouteName
Merge branch 'feature/controller-services' into develop

* feature/controller-services:
  Add tech docs about controller base classes, and warning about getRouteName
  Make APIDoc handlers and CompilerPasses easier to extend with custom classes
  Change methods getRouteName and getSerializationGroups
  Documentation: routing for class based controllers
  Update best practices to get frontend manager in class based controller
  Add documentation for controller as a service
  Add compiler pass to automatically inject dependencies of a service exposed controller
  Use the logger to issue a warning when the default redirectTo method is used
  Add test that apidoc handlers do not touch unsupported methods
  Factor out common code for normal and serviced controller
  Add apidoc handler for controllers registered as services