[RFR] Rewrite TreeView

Need to explode TreeView in smaller components to be able to test them.

 - [x] Create a TreeFactory to generate testable trees with hook capacities
 - [x] Add tests for TreeFactory
 - [x] Create a RichTreeFactory to generate a Tree with some browser hooks
 - [x] Add tests for RichTreeFactory
 - [x] Create a TreeCache to persist a RichTree during a session
 - [x] Add tests for TreeCache
 - [x] Rewrite tree directive to use TreeCache