GTreeView was forgetting to call to base in did_update_selection().
This prevented GAbstractView from firing the on_selection hook and we
ended up with only the on_selection_change hook firing.
Previously it was only possible to have a single root-level item in a
GTreeView. This was an oversight and I didn't realize it because this
code was only ever used in the FileManager, which has one root ("/").
Also factored out item toggling into a separate function, and increase
the base indentation level so that root items can be toggled as well.
Finally, let the user toggle the selected item with the spacebar. :^)