add _d_newarrayU to allocate an uninitialized array

- rewrite _d_newarrayT and _d_newarrayiT in terms of
  _d_newarrayU

- mark all _d_newarray functions as pure nothrow

- optimize initialization in _d_newarrayiT
implement dup and idup library functions

- uses inferrence for pure and nothrow

- allocates uninitialized memory using _d_newarrayU