Autolift generator return types

Add generator return type autolifting. You are no longer required to write redundant `void yield` when use generators as output only stream (i.e. use yield expression as a statement), only writing the type you want to return from `.next()` method by `yield` is now alright.

```
function * g () : int {
  while (true) {
    yield 1;
  }
}
```