Formatting implementation using new tree

This PR adds implementation of code formatting that works atop of new tree. I would not suggest to review the code commit-by-commit as intermediate checkins here often contain non-relevant details that are ultimately removed in final implementation.
for cases like this
```
    var x = 1;
while (true) {
} 
```
after typing close curly in while statement we want to reformat just the while statement. however if we just walk upwards searching for the parent that has the same `end` value - we'll end up with the whole source file. `isListElement` allows to stop on the list element level