move function_observer into a new header
generalize writing_observable::async_get_one for arbitrary observers