Iterator and Async support

Adding a return guard for an iterator does no harm since the value returned is the state machine which shouldn't be null anyway. So #5 is done.

Turned off adding code for compiler generated classes (iterator and async state machines).

Turned off return guard code generation for async methods as I'm not sure how to guard for null in an async method anyway.