Fix delegation of continuation hook.

Fixes boost trac ticket #9741.
Fix spawn() when Boost.Coroutine v2 is used.

Fixes boost trac tickets #9442, #9928.
Ensure incomplete coroutines are correctly unwound.

We must take care not to hold a shared_ptr to the coroutine across
its own suspension point, otherwise it will not be unwound by the
io_service destructor. Move-enabled C++11 compilers take care of this
automatically, but with C++03 we must explicitly reset the shared_ptr.

Fixes boost trac ticket #9731.