fix calling destructors on qualified structs

+ optimize by not calling TypeInfo.next again and again
+ remove type info argument from GC.setAttr/setBits (I thought that was already in the previous PR)

The optimizations make the druntime/benchmark a little faster than the version from master.
If it's too dense, wouldn't it make more sense to simply add curly brackets?

Also, I don't really think it would be too dense, due primarily to the fact each condition is doing the same thing, but just with a different cast inside of it. If each condition were doing something distinctly different, I'd agree that it would be too dense.