Also: - refactor out `__voidify`; - use the `destroy` algorithm internally; - refactor out helper classes used in tests for `uninitialized_*` algorithms. Differential Revision: https://reviews.llvm.org/D115626