guardian/frontend — pull request #2947 by janua (2014-01-30 14:02:42+00:00)
Title: Fix content type in facia

This removes `ContentWithMetaData` which was used as an extra type along side `Video`, `Article`, etc. and adds `ApiContentWithMeta`.

The problem with this was with the way it was created in `Content.apply`. If an item had meta data that has come from `facia-tool`, it would be the type `ContentMetaData`. Otherwise it would follow the normal path of going through the original `Content.apply` and be the type of either `Video`, `Article`, etc.
This meant that if a content had meta data, it could not have it AND be a `Video` (for example).

What we want is to have the type `Video` and to have potentially meta data from `facia-tool`. The best way I could see to do this was to wrap `Content` (known as `ApiContent` in `content.scala`) in a type that would hold these extra fields. Seeing as this object is a part of another library, then I was forced to wrap.

The other solution would have been passing in `metaData` and `supporting` everywhere, which would be more messy.

Since `Video`, `Interactive` and `Gallery` are created in some controllers, there are new companion objects for creating these from an `ApoContent/Content` type.