Splicing: Swapping ABI compatible libraries with spack

This is interesting. Using spack to swap out ABI compatible libraries, like MPI, to avoid expensive and potentially unnecessary builds

and go further with a compatibility model for other aspects of ABI.