Auto merge of #451 - emilio:debug-opaque-types, r=emilio

codegen: Derive stuff in forward declarations.

So Rust is happy when you use them in template parameters, since the Derive
implementations can't catch this otherwise.