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

https://d.puremagic.com/issues/show_bug.cgi?id=12090
```d
string fetch(string url) {
  while (true)
    url = yield(download(url)));
}
auto fib = new Fiber(&fetch);
foreach (url, ["google.de", "dlang.org", "dawg.eu"])
    writeln(fib.call(url));
```
Everything else could be a special case of this bi-directional Generator.

> If it helps, here's the wiki section on generators vs. coroutines:
> 
> http://en.wikipedia.org/wiki/Coroutine#Comparison_with_generators

Again, it would be interesting to know how the boost people came up with their design.
They call it symmetric and asymmetric coroutines.
http://www.boost.org/doc/libs/1_56_0/libs/coroutine/doc/html/coroutine/coroutine.html