Simplify controllers

This is one of the options for simplification of controller DI.
Setters are used in abstract controllers to allow using both constructors and setters for DI in concrete controllers. The downside of this is that concrete controllers don't have access to inherited dependencies in the constructor.
Looking forward to your opinions.