Tweak view cache arrays.

Window/root view values are now cached to avoid looping each time to
find their values.

Leaf view caches are now only used if the receiver is the one the
cache is requested for, otherwise it's regenerated as needed. The
reason for not giving each view a cache each time it's compiled is
that the leaf view cache is usually only useful for event sources,
which means windows. For everything else, it's just carrying around a
lot of data that may not be useful. It's reasonably easy to swap out
this behavior by simply removing the output argument (which is a
private argument, by the way -- if it's got __s before/around it, you
don't want to touch it). This behavior might change in the future.
Add read-only context attribute for windows.
Return self from root_view/window for window views.

Because they're root views and windows.
Forbid assigning a superview to a window.