Add polymorphic memory resource primitives for custom allocators
Adds Eigen::memory_resource, monotonic_buffer_resource, byte_allocator, new_delete_resource() and get/set_default_resource() in Eigen/src/Core/util/Allocator.h. Primitives only: no DenseStorage change and no wrapper type, so sizeof and codegen of every existing matrix are unchanged.
With C++17 and <memory_resource> (EIGEN_HAS_CXX17_PMR), memory_resource and monotonic_buffer_resource are aliases for the std::pmr types. Under C++14 Eigen carries its own versions with the same interface. new_delete_resource() is Eigen's own in both modes so it goes through handmade_aligned_malloc and keeps honoring EIGEN_DEFAULT_ALIGN_BYTES and EIGEN_RUNTIME_NO_MALLOC. Alignment above 256 throws std::bad_alloc, since handmade_aligned_malloc stores the offset in a byte.
The integration question (allocator in DenseStorage vs. a wrapper in contrib, and whether to wait for C++17) is still open in the threads and is not part of this MR.
Tested: allocator with gcc C++14/17, clang-21 + libc++ C++14/17 under ASan/UBSan, and -fno-exceptions; smoketest set with gcc-10 and clang-14. CI only builds smoketests, so allocator itself needs the affected-tests label to run there.
benchmarks/Core/bench_allocator.cpp compares the resources against handmade_aligned_malloc. No timing claims here, I only had a noisy host.
Ref #2354