remove recursive queries in comment thread views

@gwprice @kevinchugh @e0d

This change set addresses performance problems with GET /api/v1/threads/:thread_id?recursive=True.  Previously this view was built by recursing over the contents collection in mongo document by document, which degrades exponentially as the number of comments increases.

This change adds a new scalar sorting key to each comment document at create_time, and an accompanying index, which is composed of the stringified ObjectIds of parent comments (starting with root), plus this comment's id, joined in a string.  This allows access to an entire thread's content, sorted in display order, using a single indexed query.

Also, previously each individual comment load (call to Comment.to_hash) involved a lookup for the author's username, potentially incurring another mongo query each time.  This change copies the author's username into the comment document, making the lookup unnecessary.