Add AAIB Reports to Rummager on publish

In order to expose AAIB Reports in search, we need to send the documents
to Rummager when publishing.
Rename specialist_document_path to cma_case_path

With moving away from SpecialistDocument being referenced throughout the
App, we've renamed specialist_document_path to be cma_case_path. This
also allows us to refactor the steps in the Cukes to take a document
type in order to build the paths.
Testing AAIB Report publishing workflow

With the addition of publishing AAIB reports to rummager, we need to
test this workflow.
Allow withdrawal of AAIB reports

Also testing withdrawal workflow.
Merge pull request #163 from alphagov/add-aaib-reports-to-rummager

Add aaib reports to rummager
Rename misleading observers

Some of the methods in the `ObserverRegistry` and the wiring suggest
they provide observers for generic documents but actually provide
observers for CMA cases specifically.

- document_publication => cma_case_publication
- document_update => cma_case_update
- specialist_document_creation_observers => cma_case_creation_observers
- specialist_document_withdrawal_observers => cma_case_withdrawal_observers

Also update two of the `ServiceRegistry` dependencies which revealed the
issue that the `withdraw_aaib_report` service was using observers for
withdrawal of CMA cases. That's been fixed too.
Rename misleading repositories

Rename `document_repository` to `cma_case_repository` in the
`ServiceRegistry` and rename `specialist_document_repository` to
`cma_case_repository` in the wiring and throughout several scripts and
tests.

Doing so has revealed a few issues where we might be using the wrong
repository (in `validated_manual_document_factory_factory`) or an overly
specific repository (in the scripts and tests).
Rename misleading Content API exporter

Rename `document_content_api_exporter` to
`cma_case_content_api_exporter` as it's only capable of handling CMA
cases.
Rename misleading services

The `ServiceRegistry` had a lot of services claiming to be for documents
when they were actually for CMA cases only. This commit renames all of
them to a more specific name.

- list_documents => list_cma_cases
- new_document => new_cma_case
- create_document => create_cma_case
- show_document => show_cma_case
- preview_document => preview_cma_case
- publish_document => publish_cma_case
- update_document => update_cma_case
- withdraw_document => withdraw_cma_case
- new_document_attachment => new_cma_case_attachment
- create_document_attachment => create_cma_case_attachment
- update_document_attachment => update_cma_case_attachment
- show_document_attachment => show_cma_case_attachment
Rename ListDocuments to ListDocumentsService

For consistency with the other service objects.
Move loose observers into ObserverRegistry

There were four loose observer collections in the wiring file:

- cma_case_creation_listeners
- aaib_report_creation_listeners
- cma_case_withdrawal_listeners
- aaib_report_withdrawal_listeners

Moving them into the ObserverRegistry cleans up the wiring and the
ServiceRegistry dependencies and puts all of the observers into a single
place for easier extraction into per document type observer registries.
Extract CmaCaseServiceRegistry

Extract CMA case services into a registry of their own. This cleans up
the bloated ServiceRegistry and will make it easier to find common
behaviour between service registries that can be pulled out into shared
behaviour.
Extract CmaCaseObserverRegistry

Pull out lists of observers for CMA cases from the bloated
ObserverRegistry into a registry of their own. As a result the
CmaCaseServiceRegistry only needs to know about the
CmaCaseObserverRegistry instead of getting all observers.

It also allows us to clean up the method names to be more generic, which
should allow us to find commonalities between observer registries for
different document types more easily.
Remove unused scripts
Use manual document builder for manual document preview
Merge pull request #165 from alphagov/rename-things-for-accuracy

Rename things for accuracy and extract some CMA case registries
Importer set up initially to import AAIB reports

From `import/metadata` (json files, see spec/fixtures/import) and
`import/downloads`, import AAIB reports.

Also create an optional decorator used to validate that all attachments
for a document have been referenced in the body of that document.

Worked on by myself and @bestie