LS: smart indentation

Implementation of smart indentation that uses new syntax trees
I would really prefer if we can group functionality module-wise and use namespaces more as now content of completion list is a bit messy.