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.
The reason this is here is because it was previously trying to allocated in the destructor of a heap-allocated object, which triggers an `InvalidMemoryOperation` error. This wasn't an issue before, but with the change to having the GC call the destructors of heap allocated arrays of structs with destructors, it does cause an issue. This test was only intended to test that the destructors, constructors, and posblits are called at the right times, so I changed it to not attempt to allocate in the destructor.