Add 'attachable' trait to content models

This has been extracted from the enhancements
to TravelAdviceEdition that were present in
Travel Advice Publisher.

The `attaches` method accepts an asset api client
and a list of attachment field names to handle.
Define the asset api client as an attribute on the module

Defining the asset api client on the module helps
us to avoid coupling the api adapter with content
models, whilst still being able to define the
attachments here in content_models.

If a method is invoked which requires an api client,
and none is present, an exception is raised.
Set up attachable fields for travel advice edition

These are the same as the current fields defined
in travel advice publisher
Don't define the attachment id fields twice

These are now defined by the `attaches` method
Don't use ActiveSupport's `blank?` or `present?` methods
Restore the previous api client in teardown block
Merge remote-tracking branch 'origin/add-attachable-trait'