[ADT] Allow SmallVector move construction without move assignment (#219934)
Move-construct inline elements directly instead of using move assignment.
This avoids requiring element types to be move-assignable, only move-constructible.
Such types at the moment forces us to fall back to std::vector, for no good reason other
than an implementation quirks which is fixed here.
Assisted-by: Codex