Add scatterv and gatherv collective operations

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