Fixes #4149: Move r30343, 30364, 30598, r30601 to v1.7 branch (ob1: optimize blocking send and receive paths)

---svn-pre-commit-ignore-below---

r30343 [[BR]]
ob1: optimize blocking send and receive paths

Per RFC. There are two optimizations in this commit:

 - Allocate requests for blocking sends and receives on the stack. This
   bypasses the request free list and saves two atomics on the critical path.
   This change improves the small message ping-pong by 50-200ns on both AMD
   and Intel CPUs.

 - For small messages try to use the btl sendi function before intializing a
   send request. If the sendi fails or the btl does not have a sendi function
   silently fallback on the standard send path.

cmr=v1.7.5:reviewer=brbarret

r30364 [[BR]]
Fix a bug in the ob1 optimizations that can cause a segfault.

btl sendi functions currently can not handle the descriptor being NULL. The
send inline optimization was assuming (incorrectly) that NULL was ok.

cmr=v1.7.5:ticket=#4149

r30598 [[BR]]
ob1: OBJ_CONSTRUCT the convertor in the send_inline optimization.

This change does not appear to increase the small message latency of ping-pong
benchmarks and fixes an issue found by our ibm datatype tests.

Fixes #4232

cmr=v1.7.5:ticket=#4149

r30601 [[BR]]
ob1: large buffered sends were broken by the ob1 optimizations. fix them

The problem was caused by the static request optimization. The buffered send case
is much like the isend case in that the request structure may be needed after
MPI_Bsend completes. Fix this case by calling isend and freeing the resulting
request.

cmr=v1.7.5:ticket=#4149