Destroys the coroutine, if it holds a valid one.
This does not cancel an active coroutine. Destructing a resumable coroutine,
i.e. one with a call to async_resume that has not completed, is undefined
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)