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
.dup should be public
Merge pull request #761 from WalterBright/dup-public

.dup should be public
.dup should be @property
Merge pull request #762 from WalterBright/dup-is-property

.dup should be @property
fix Issue 12580 - dup() won't accept void[]
Merge pull request #766 from MartinNowak/fix12580

fix Issue 12580 - dup() won't accept void[]