Refactor TypeContents to be more scrutable. In particular, do not requir...

...e types

to register such fine-grained distinctions, but rather focus on the end
properties we're trying to compute. Also, cleanly distinguish when properties
must be found in *owned* types vs *reachable* types.

Fixes #10157

r? whomever.