fix dup for const/immutable reference type elements

The second overload takes care of all cases where the elements can be
converted to mutable. So, the first overload has no business
Unconst-ing anything.
The other overload only matches when `is(const(T) : T)`. That's not true for `const(Object)`, for example, so it's handled by the first overload.

The difference in the overloads is not that one takes mutable and the other const. Both take all mutable/const/immutable. Convertability to mutable is where they differ.

To check against the convertability, we need to strip any const/immutable from `T` => `Unconst`.