abstractvirew: Split itemForIndex to get TreeTraversalItem or widgets.
In the next few commits, the widgets (VisualTreeItem) will be fully
decoupled from the model insertion/moving/removing logic. Previously,
there always was a widgets for all QModelIndex. Because of that, it
wasn't necessary to use the intermidiate model mapping and everything
could directly map QModelIndex to widgets. Once optimizations and
collapsed widgets become supported, this 1:1 mapping no longer exist
the the model<->TreeTraversalItem<->widgets mapping becomes mandatory
everywhere.