Fix Issue 13195 - Delete calls destructor but doesn't free

~~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.~~

Originally this PR was part of fixing the GC, but I did finally separate the druntime code required for this PR so that it can be done independently of the main PR.