Translator refactor: split Metadata/ImageMetadata

Refactored the Translator API as follows:

* Added a Translator#translate(Metadata, List<ImageMetadat>, Metadata).
  This method indicates that format- and image- metadata are now treated
  differently when translating.
* Split AbstractTranslator#typedTranslate to translateImageMetadata and
  translateFormatMetadata. The former needs to be implemented by
  default, as typedTranslate does, as it represents the standard case of
  translating between one unknown (e.g. just falling back to image
  metadata) and one known type. The latter has a default, non-functional
  implementation but can be overridden if needed (e.g. for open exchange
  formats, when format-specific metadata will map to other
  format-specific metadata).
* When translating, MetadataWrappers can now be unwrapped to split into
 format and image metadata.

All translators were updated for the new API, as well as the
TranslatorService.

Additionally, implemented TranslatorTest to attempt to ensure these
features are not broken in the future.

Closes #145