Fix Issue 11938 - Add std.traits.CompatibleUnqual

`CompatibleUnqual` is similar to `Unqual`, except it only removes qualifiers when the unqualified type is compatible with the original type, i.e. `is(T : CompatibleUnqual!T)` is always true.

https://d.puremagic.com/issues/show_bug.cgi?id=11938

As mentioned in the bug, this is useful when writing range algorithms and you want to get a mutable version of a range (when possible).