arrayAllocImpl rewrite

I wanted to save it for later, but since it's ready, I might as well push it now.

It's a full rewrite of "ArrayAllocImpl". Improvements include:
* simpler flow in regards to recursion.
* returned arrays have a capacity (for all dims), and can be appended to (see 10641).
* always nothrow
* safe for PODs.

This also means that `array` is now often nothrow, and sometimes even safe !