future: Fix self move assign of promises
future: Fix self move assign of promises

It is invalid to call new(&x) promise(std::move(x)).

We also don't want to have explicit checks for the self move assign
corner case in a type that is used everywhere.

The new implementation avoids both the undefined behavior and the
explicit check.

Signed-off-by: Rafael Ávila de Espíndola <1975039f9046bf513b77c0c5639a0efc25f00e7f@scylladb.com>

scylladb/seastar,avikivity/seastar,cloudius-systems/seastar,dreamsxin/seastar,scylladb/seastar,cloudius-systems/seastar,avikivity/seastar,syuu1228/seastar,syuu1228/seastar,cloudius-systems/seastar,syuu1228/seastar,dreamsxin/seastar,avikivity/seastar,scylladb/seastar,dreamsxin/seastar