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.
This doesn't actually transfer ownership unless `u` is changed to be a `ref` parameter.