Finally fix `emplace` for structs

#### In the name of God, the King, and Walter I managed to release it.
This is the time *D* becoming a language with working `emplace` for structs (sorry, not for classes now).

Now specialization for struct works this way:
```D
T t = args[0];
```
if the latter compiles and works like
```D
T t = T(args);
```
otherwise.

And specialization for static array works this way:
```D
T t = arg;
```

#### Note:
I have almost exhausted my power of apprehension so some bugs may be missed.


Requires: #776, #952, #928, #948.