add experimental asio::timer2 with a generalized async_get_one signature