Add better array extending function

An attempt to create a function to use in `std.array.appender` and anticipated (let's correct: needed in most cases IMO) "real appender" from [Issue 11138](http://d.puremagic.com/issues/show_bug.cgi?id=11138).

I'm not good in D internals but what happens now in `std.array.appender` looks like a total mess as it attempts to create D array but doesn't respect any hidden info at all.