Add copy-constructor and copy-assign to VariableSizeCommunicator
This basically implements the rule of 3, as we have a custom destructor. Without this patch, copying a VariableSizeCommunicator will lead to double frees.
This addresses issue #159 (closed). As stated there, an alternative might be to not use MPI_Comm_dup
and MPI_Comm_free
and thus not assuming any ownership at all. Then, the default constructors etc. are probably just fine.