[Multiple Stream Groups] Add multi-stream device_name_utils.
Hi @changhuilin Can you please review this PR ? Thank you!
This is a part of the Multiple Stream Groups feature. With this new feature, users are allowed to create multiple stream groups in one GPU device, and the computation graph can be distributed to different stream groups for paralleled execution to increase GPU utilization and throughput and decrease latency. This is essential for accelerating workloads containing many small-sized GPU kernels. We got 8x speedup easily on recommender online inference systems. Please refer to the 'Performance' part in our [document](https://docs.google.com/document/d/1yL3lWk_iFKqLTyekkuaiKXZ78I0lPmD5kM1fghHRs4Y/edit?usp=sharing) for detailed and more experiment results.

Full multi-stream inference implementation please see https://github.com/tensorflow/tensorflow/compare/master...buptzyb:MultipleStreamGroups.

This PR provides the multi-stream related helper functions in DeviceNameUtils.
 When the multi-stream feature is enabled, TF will create multiple StreamDevice objects, each associated with one stream group. The name of a StreamDevice is like `/device:STREAM_GPU_0:2`, which means its real GPU device is `/device:GPU:0` and it manages the second stream group. The helper functions provide interconversion between Device names and StreamDevice names.

Ask for review from @changhuilin.