Extract AbstractDocumentsController

Now that CMA cases and AAIB reports both use a service registry with the
same interface we can extract most of the common behaviour into a
superclass.