explicitly set other_name etc to undefined when saving

We need to remove these by hand when they are empty as the set method
ignores undefined keys.

Fixes #547
use update instead of save for image operations

This means that if something is broken in the other aspects of the data,
such as other_names not having a name which was possible due to a bug,
then the photo operation will still occur without error as the
validation isn't being fired on the entire object. Without this you end
up with a 500 error and you can't delete any photos.

Fixes #528
Fix jshint errors