Simplify observers interface in AaibReportServiceRegistry

Use the same interface as we're using in CmaCaseServiceRegistry by
wrapping the ObserverRegistry methods we care about in an ostruct.
Extract AbstractDocumentServiceRegistry

CmaCaseServiceRegistry and AaibReportServiceRegistry do the same thing
with variation for just three dependencies -- repository, builder and
observers.
Merge pull request #172 from alphagov/extract-common-service-registry

Extract common service registry
Remove validation concerns from form objects

* Create separate validation objects for each document type.
* Convert ManualDocumentForm to a simpledelegator -- avoids unexpected
  errors where it doesn't proxy through methods as expected

+ @bestie
Rename form objects view adapters
Remove inheritance from CoreDocumentValidator
Merge pull request #173 from alphagov/create-validator-wrappers-which-arent-form-objects

Remove validation concerns from form objects
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
Handle duplicate titles.

 * For documents which already have a newer version, just skip it.
 * For documents which have an older version, delete that version and
   import the newer instead.
Strip PDF tags from AAIB body on import
Fix #update bug in DocumentMetadataDecorator

The extra attributes hash was completely replaced
on update with whatever was in the given hash.

This required the caller to provide all the
key/value pairs for the extra attributes or have
them wiped out. This was inconsistent with the
update behaviour of the other fields.
Import all the AAIBS