- fix a cast from void* to the wrong dynamic type. The code cast from
tuple<decay_t<Fn>>* -> void* -> tuple<Fn>, which worked when an rvalue
was passed to resume_with(), but broke if the function was passed
by lvalue-reference, because it resulted in a cast from Fn to Fn&.
- remove use of std::tuple - no need to instantiate it for every callable.
Signed-off-by: Damian Jarek <damian.jarek93@gmail.com>