Worked around method_decorator problem with custom getattr

When using django's method_decorator on a Class Based View, decorators with arguments will fail because the method_decorator blindly tries to copy an attribute that an instance does not have, ```__name__```. This is really something that django need to sort out (https://code.djangoproject.com/ticket/13879), so we can probably undo it this the future.

Resolves https://trac.openmicroscopy.org.uk/ome/ticket/11732

Also, switch to using python's functools instead of legacy django.utils.functional.