Reimplement type_needs_drop on top of TypeContents

r? @graydon