add Unqual to core.internal.traits
make __setArrayAllocLength pure nothrow
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

- can infer @safe, pure and nothrow

- strongly pure dup if element type implicitly convertible to mutable

- allocates uninitialized memory using _d_newarrayU
Merge pull request #760 from MartinNowak/dup

implement dup and idup library functions