Add scatterv and gatherv collective operations

This patch was originally developed for Boost 1.45.0. It's completely based on the equivalent `scatter.hpp` and `gather.hpp` headers.