URLs and contact notes can be translated too

URLs in case you want to provide a language specific version of the URL
cope better with no existing version of field being saved

don't try and access a field on an object that doesn't exist and if
there isn't an existing version then set the default language to the
current version rather than nothing
correctly translate things that are arrays when saving

if something's an array then we need to translate each element
indvidually.
fix bug preventing fall back to default language translation

if translated isn't null then the catch for it not exiting is never
called and we don't fall back to the default. And if it's not a
translated object *then* we fall back to returning it as is.
forEach makes more sense than every
correctly translate arrays for viewing

If it's an array we need to translate each element of the array
individually rather than handing over the whole thing