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 assumes that T is default-constructible

There is no instance of struct T inside Unique, only T*. I've just tested Unique of struct T with disabled default ctor & postblit - it works, I can add as a unittest if you like.

> And was the new T(args) syntax fixed for structs?

It works at least for the unittest:

    return Unique!(S).create(5);