Fixes #3766: Move r29200 to v1.7 branch

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

r29200 [[BR]]
Per patch from George, with a few minor cleanups. Correctly address the complete exchange of required wireup information in Intercomm_create so all procs in the resulting communicator know how to talk to each other.


r29204 [[BR]]
Sadly, there is no RTE-agnostic way to prune the modex entries, so we must send them all.


r29206 [[BR]]
Identification, tab vs. space.

r29274 [[BR]]
Do some cleanup of the way we handle modex data. Identify data that needs to be shared with peers in my job vs data that needs to be shared with non-peers - no point in sharing extra data. When we share data with some process(es) from another job, we cannot know in advance what info they have or lack, so we have to share everything just in case. This limits the optimization we can do for things like comm_spawn.

Create a new required key in the OMPI layer for retrieving a "node id" from the database. ALL RTE'S MUST DEFINE THIS KEY. This allows us to compute locality in the MPI layer, which is necessary when we do things like intercomm_create.


r29303 [[BR]]
Don't use ORTE specifics in the OMPI layer. Instead use the RTE equivalents.
Patch submitted by Geoffroy Vallee.

r29325 [[BR]]
Store the proc's locality on the ompi_proc_t


r29405 [[BR]]
*****   THIS INCLUDES A SMALL CHANGE IN THE MPI-RTE INTERFACE   *****

Fix two problems that surfaced when using direct launch under SLURM:

1. locally store our own data because some BTLs want to retrieve 
   it during add_procs rather than use what they have internally

2. cleanup MPI_Abort so it correctly passes the error status all
   the way down to the actual exit. When someone implemented the
   "abort_peers" API, they left out the error status. So we lost
   it at that point and *always* exited with a status of 1. This 
   forces a change to the API to include the status.