Add new fd_async module, will replace extern.freedesktop once ready