feat(tree): Add support of expand/collapse of tree nodes

This also adds custom row filters and sorters available to registration through API.

A custom row filter is used to hide the related gantt rows when a node is collapsed.

In the model, hierarchy information may be inconsistent with natural list ordering of rows. A custom row sorter is registered in tree controller plugin. This sorter solves the problem and ensures consistency between the tree hierarchy and displayed rows in the gantt, while keeping the rows ordering as near as possible from the model list.