LS: smart indentation

Implementation of smart indentation that uses new syntax trees
Where do you check that it doesn't start at the same line as the parent?

Also, in the following example:
```TS
[1,
     2
          + 3, 4
$
```
It seems like we would indent this like the `+ 3, 4`, but really we want the 2. Am I missing something?