Avoid query for uncommon case where CMS roots are not visible

This saves a database query from every CMS page load. Originally
introduced in commit 61f56dd14751bab4c0232a62afb87555216a67f4 with no
rationale. These are the edge cases where it makes a difference, as far
as I can tell:

* It forbids seeing published subpages when all roots are unpublished.
  But why the special treatment of roots and not caring about other
  intermediary levels? And it checks for any roots regardless of
  placement, even if it's in a different hierarchy.
* It prevents seeing a draft version of a page if there are no draft
  versions of any root pages in the site. If that's at all possible, it
  seems like a bug?