LS: smart indentation

Implementation of smart indentation that uses new syntax trees
good point. I'll add support for type references and keep tuple types as a separate work item.