RXMappingTraversal is idempotent.

This is done by autoreleasing the temporaries—the data containing the inner state, and the individual mapped objects—and allowing the caller’s enclosing autorelease pool to manage their lifetimes.

Caveats apply regarding well-formed handling of those external autorelease pools with respect to the calls to -countByEnumeratingWithState:objects:count:; these are documented in RXMappingTraversal.h.

This commit also makes meaningful use of the state’s mutations pointer, ensuring that it is set to the value provided by the internal enumeration. Thus, for(in) will detect mutations to the interior collection during enumeration of it.
Publicizes RXMappingTraversal.h.
Merge branch 'feature/idempotent-mapping-traversals' into develop