[NVIDIA TF] CollectiveAllToAllV2 + NCCL all-to-all fixes
cc @rainwoodman 
This PR fixes a few small bugs with `CollectiveAllToAllV2` and NCCL all-to-all:

* NCCL does not support in-place all-to-all, so don't reuse the input tensor in `CollectiveAllToAllV2`. We could potentially keep `forward_input_or_allocate_output` and allocate a temporary buffer inside the NCCL backend only when the input is reused. This would allow other backends to still perform an in-place all-to-all. It looks like the ring algorithm uses temporary output buffers anyway.
* Update calls to `ncclSend` and `ncclRecv` to follow the mapping by using `global_rank`. The TF runtime can sometimes [reorder the GPUs](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/common_runtime/collective_param_resolver_local.cc#L577-L580) to optimize the ring algorithms. While this PR fixes nccl all-to-all to follow the ordering, the ring algorithm is also affected and gives incorrect results.
* VLOG outputs in `nccl_manager.cc` would cause a crash due to interpretting the data buffer as a string.