The GC will now call destructors on heap allocated structs

This is the accompanying PR (which this requires) to D-Programming-Language/druntime#864, which includes the fix to the delete operator so that it will free the memory of pointers to structures that only have a destructor defined. Due to the overlap in required code between my fix for the delete issue and the fix to call destructors on structs, it would be very difficult to make them 2 separate PRs, so I have instead opted to stay with 1 PR which fixes both.
Thanks for the explanation. So it is not really related to this PR, but the one doing destruction of heap allocated structs or arrays of structs. Maybe you should add a comment to this respect.

I wonder if it is possible to add a sensible test case that fails without the fix. Maybe allocate a struct without references (so the GC sets the NO_SCAN bit), and after deleting the struct, call GC.query on the deleted pointer: it should have NO_SCAN cleared. This is pretty GC implementation specific, though.