Hide coroutines in a compilation unit.

* Works with Boost 1.55 and up.
* Respond to review comments.
[fold] review comments