Add cudaDeviceSynchronize before posting asynchronous receives.

This fixes the slowdown with iteration count I was seeing on titan.

Also replace individual calls to MPI_Wait with a single MPI_Waitall.