librustc: Allow trait bounds on structures and enumerations, and check

them during kind checking.

This implements RFC #11.

Closes #15759.

r? @nikomatsakis
Could you also add some run-pass tests like the small ones mentioned in the RFC?