LS: smart indentation

Implementation of smart indentation that uses new syntax trees
* Type argument list inside a generic type reference
* Tuple type elements