cart_sub.c: allow remain_dims==NULL if there is no topology on comm

Patch submitted by Gilles Gouaillardet on #4518.  Reviewed by Jeff.

Fixes #4518

cmr=v1.8.2:reviewer=ompi-rm1.8
coll basic: correctly handle alltoall[vw] 0-sized messages

Patch from Gilles Gouaillardet on #4506 to correctly handle 0-sized
messages in coll/basic MPI_Alltoallv and MPI_Alltoallw.

Reviewed by Jeff Squyres.

Fixes #4506.

cmr=v1.8.2:reviewer=ompi-rm1.8
coll tuned alltoallv: correctly handle 0-sized messages with MPI_IN_PLACE

Patch from Gilles Gouaillardet on #4517 to fix handling 0-sized
messages in coll tuned with MPI_ALLTOALLV and MPI_IN_PLACE.

Reviewed by Jeff Squyres.

Fixes #4517

cmr=v1.8.2:reviewer=ompi-rm1.8
btl/vader: improve performance under heavy load and eliminate a racy
feature

This commit should fix a hang seen when running some of the one-sided
tests. The downside of this fix is it reduces the maximum size of the
messages that use the fast boxes. I will fix this in a later commit.

To improve performance under a heavy load I introduced sequencing to
ensure messages are given to the pml in order. I have seen little-no
impact on the message rate or latency with this change and there is a
clear improvement to the heavy message rate case.

Lets let this sit in the trunk for a couple of days to ensure that
everything is working correctly.

cmr=v1.8.2:reviewer=jsquyres
Allow MPI_MODE_NOPRECEDE | MPI_MODE_NOSUCCEED for MPI_Win_fence

This combination does not make sense but is not explicitly forbidden by
the standard so remove the argument check for this combination.

cmr=v1.8.2:reviewer=jsquyres
Fix the issue reported by Gilles Gouaillardet regarding the
MPI_PROC_NULL persistent requests.
MPI_Alltoallv.3in: fix typo

Fix minor typo reported by Xuankang Lin.

cmr=v1.8.2:reviewer=dgoodell