TODO
====

* SilvaLayout should not break Silva's public preview if it's 
  there but not installed.

* SilvaLayout/browser/silvadefault defines both a minimal skin and basic
  infrastructure for layouts. We might want to split this up.

* adapters/treenode.Node.getVirtualHostRootNode() need review.

* The metadata adapter expose two interfaces to get to metadata, we should
  have only one (the __getitem__ interface).

* Review the current hack to get to metadata of the editable version for
  previews.

* Review render_preview (and related methods) on SilvaView.

* Treenode filter could be defined as functions instead of classes.

* Rename treenode.onBranch(node) to treenode.isAncestorOf(node).

* Refactor treenode filtering to a node.setFilter() interface.

* If filters return False this should mean the object is excluded.
