impl trait for trait

Code that ensures that every trait object `Foo` implements the trait `Foo`.

This requires patching up some object safety concerns. Also more-or-less requires removing support for `for Sized?`. Don't merge yet until we we reach final decision on these language changes.