Comment moderation backend

This includes the flag/unflag endpoints for use by the plot detail page as well as the moderation endpoints for hiding, archiving, and flag clearing.

I chose to create an EnhancedThreadedCommentFlag model because the built-in CommentFlag does not support hiding, and I though having our doubly-inherited comment model link back to another inherited model would be too confusing, or perhaps impossible

I changed the base comment moderation endpoint because I made endpoints for flag and unflag and these look most natural as:

    POST /{instance}/comments/{comment_id}/flag/
    POST /{instance}/comments/{comment_id}/unflag/
Consider changing this to `return self.enhancedthreadedcommentflag_set.filter(hidden=False).exists()`