Refactor a bunch of lookup_vtable to reduce rightward drift and clean things up.
Add a to_owned_vec method to IteratorUtil.
WIP to fix vtable resolution.
Fix some impls such that all supertraits are actually implemented.
Have vtable resolution check for supertrait bounds. Closes #4055.