Comments: Extract processing in the parser into a method and comment it
Comments: Small improvement of last whitespace-only line dropping code

Removing last whitespace-only line is equivalent to removing last empty
line because the whitespace was stripped already in the previous steps.
Also renamed |remove_last_whitepsace_line| to |drop_trailing_empty_line|
to make it more consistent with other methods.
Comments: Move |drop_trailing_empty_line| call into a condition

It didn't make sense to call it in case when all trailing empty lines
were already dropped.
Comments: Small reordering (to match order of execution)
Comments: Fix whitespace handling

Before this change, the following code:

  y2milestone("M1");

  y2milestone("M2");

was translated into:

  y2milestone("M1");
  y2milestone("M2");

The empty line between the calls was missing. This happened because
|process_comment_before| produced an empty string, which was ignored by
the caller.

This commit adjusts the code to no ignore empty strings. If a comment
really should be ignored, |process_comment_{after,before}| returns
|nil|.

This commit also causes empty lines sometimes to appear at the beginning
of emitted methods or modules. This will be addressed later.