librustc: Disallow trait bounds in types, enumerations, and structure definitions

r? @catamorphism

I had to take an alarmingly large hatchet to most of the trait bounds in pipes. There is some bug in the interactions between the pipes compiler, the code generated by the pipes compiler, and the kind checker. However, I believe the code to still be safe; it should still not be possible to send a garbage-collected value over a channel.