Fix Issue 13157 - Enable unaliased construction and conversion for std.typecons.Unique

https://issues.dlang.org/show_bug.cgi?id=13157

* Enable 'safer' construction of the unique resource without aliases, by wrapping the resource constructor. This is done with a factory function `unique!T()` to support calling a class constructor without arguments.
* Enable transferring `Unique!Derived` rvalue to `Unique!Base`.
* Document `isEmpty`.

This mainly updates old code that was disabled with newer language developments.
It does transfer ownership, because the caller has to `release` any Unique lvalue. `u._p` is set to null so that our local `u` does not delete `_p` when it goes out of scope at the end of the constructor.