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;
Call/Function Expression: Tests for chained calls

1. Call and function expressions don't mix well.
2. Assining result of chained method call to variable should still indent