Restructure AST so that the associated type definition carries
bounds like any other "type parameter".
Add in the bounds into the typeparameterdefs for assoc types