Reimplement type_needs_drop on top of TypeContents
auto merge of #5126 : nikomatsakis/rust/issue-4808-representation-of-extern-fn, r=graydon

r? @graydon