LS: smart indentation

Implementation of smart indentation that uses new syntax trees
seems like it can be used by getLineAndCharacterFromPosition, move it to types