Add a converter for transforming multi-language documents

This takes a document with language based keys and transforms it into a
flattened document based on the given language preference and optional
default language.
More generic way to determine if a field is multilingual

By keeping a list of known language prefixes we can hopefully detect
when a field has been translated by checking if all of the keys are
valid language codes, then translating the keys based on the provided
languages.
Add i18n middleware
Add toJSON filter to translate documents

This checks the options that have been set on the schema in the i18n
middleware and tries to translate the document to that language.
Add tests for translations in the API

This sets the Accept-Language header then checks that the returned
document is in the requested language.
Use Mixed schema type for all keys that aren't arrays

This allows documents to have objects where they are expecting a string
in the schema.