Unique update

Note: This depends on #2308 (shown as commits before 18th July).

* Enable 'safer' construction of the unique resource without aliases. 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.