gh-136: move any fiber yield out of catch block.

This is done to avoid situation, when two or more
fibers yield inside their try/catch blocks and
throws an exceptions. Seems like exception unwinder
stores some global state while being inside
a catch block.

This could lead to incorrect exception processing
and server crash.
gh-136: review fixes, remove an unnecessary state variable.
Merge remote-tracking branch 'ocelot/stable' into stable