Cache views. Related to #12, #16, #17
Pre-calculate View.has_subviews. Related to #12, #16, #17
More robust checks for do_not_traverse()