Store each translation as a separate key in elasticsearch

The previous solution of always storing objects in elasticsearch didn't
preserve backwards compatibility. So queries like 'name:Chris' no longer
worked, instead you had to do a query like 'name.en:Chris'. Since there
are already several consumers of the search API it makes sense to try
and maintain the simple version of the query.

Rather than storing language objects in elasticsearch we simply flatten out
any language objects so they take the form {field_name}_{language_code},
e.g.  name_en or name_en-gb. Then the default language for the instance
is stored in the 'name' key so that's still searchable.