Throw http exception if thread is not commentable

If a comment is added to a thread which was just set as not commentable, a LogicException is thrown by the listener, resulting in a 500 internal server error.

This PR checks if the thread is commentable and throws a proper access denied http exception in the controller.