indent refactor. closes #141. closes #159.

reduced indent complexity by:

 - keeping indent logic together with hooks (easier to identify what affects
   the indentation and keep things grouped);
 - avoiding magic rules and trying not to be too smart;
Comment Indent: Test for comment indent in front of else