Created utility to manage position of comments.

Very naive approach. Meant to be used as follows.

    align = require('lib/align');
    align.move(index, $comments);
    align.above(index, $comments);
    align.below(index, $comments);

This algorithm is greedy in the sense that when a comment is
highlighted, it will appear next to the corresponding line of the code.
So rather than maximizing the number of visible comments on the screen,
we choose to display the comment as close as possible to the content it
refers to.

Unsure as to whether we can say that if we reach a comment that does
not need to move, then we can break out of the loop, i.e. while
adjusting the position of the comments above, upon reaching a comment
that does not need to be moved, would comments prior to that one still
need to be adjusted, or no?
Made it so that comments too far up are hidden.

Need to call to .show() excessively because could have elements become
visible due to changes in their height, due to changes in the width of
the window.
Added support to display the comments.

Does NOT read the comments from a file yet...
Changed so that entire file is not rendered at once.

Added support to dynamically change the height of the editor with the
size of the window. The major accomplishment here is to handle the
scrolling of the editor with regard to the comments.

We do this by keeping track of the offset to where the editor has been
(vertically) scrolled, and apply a delta to the `top` css-property
relative to this.
Give the editor focus after clicking on a comment box.
Added effect to the highlighted comment box.

Now is shifted to the left slightly, as compared to the other comment
boxes.
Created a Comment class.

Maintains the text of the comment and the section of code to which it
applies. Emits an event when the text has changed.

...and so the refactoring begins =)
Added support to de/select Comment objects.
Created a List (of comments) class.
Eliminated global state of the offset from the module.

Now must be passed in to each of the various functions. Also moved this
module to the comment-vm/ folder since it affects the view model by
using jQuery.
Updated documentation of comment-vm/align module.
Refactored comment-show.js into comment-vm/show.js.

The constructor takes the editor and a list of comments. This way, we
can keep all state associated with the selected comment box localized
and make it possible to display comments for multiple editors in the
compare view (eventually).
Added `index` field to Comment object for use in List.
Forgot to update the indices of comments.

Need to increment the index of the following comments when one is
added, and decrement the index of the following comments when one
is removed.
Wrote handlers for when list of comments changed dynamically.

Adds a new comment box to the displayed DOM when a comment is added to
the list. Removes the comment box from the displayed DOM when it is
removed from the list.

Modified approach to not require binding a handler for each comment when
the cursor changes. Note that to handle the alignment of the comment
boxes when the window is resized and there are NO selected comments,
choose (arbitrarily) to align with respect to the first comment.
Created a "main" module for displaying comments.
Added UI interaction for user to delete comments.
Fixed a couple style issues with displaying comments.

Changed so that the scolling is "smooth" for the comments, and that
they do not immediately disappear from sight when region falls below
what would fit the ENTIRE comment.

Also made it so that the width of the comment has the same upper bound,
regardless of whether it is selected (and thereby shifted left) or not.
Changed to use button for deleting comments.
Changed to not bind/update text of the comment DOM.

The editing functionality will handle this on its own.