Issue 12090 - Make std.concurrency compatible with fibers as threads

https://d.puremagic.com/issues/show_bug.cgi?id=12090
Why not defining this in `core.thread`? In fact Fiber could be the special case of `Generator!void`.
Also your Generator doesn't allow two-way communication, e.g. `Generator(Return, Args...)`.
Have you looked at [Boost::Coroutine](http://www.boost.org/doc/libs/1_54_0/libs/coroutine/doc/html/coroutine/coroutine.html). It seems that they split their design to two different uni-directional Coroutines in [1.55](http://www.boost.org/doc/libs/1_55_0/libs/coroutine/doc/html/coroutine/coroutine.html). Would be interesting to know why, but special-casing `ReturnType=void` or `Args.length == 0` should suffice IMHO.