LS: smart indentation

Implementation of smart indentation that uses new syntax trees
I would use jsdoc for these, to show up in quickinfo and function help when ppl are trying to use them