Fix Issue 6998 - std.container.Array destroys class instances

As (re)discovered here:
http://forum.dlang.org/thread/bdzwpmehiazpicftbxko@forum.dlang.org

Also fixed some more cases where we only destroyed structs (what about static arrays?). Overall, the rule of thumb is `.destroy` iff `hasElaborateDestructor!T`.