[1/N] [Dispatchable Collectives] Create Backend class (#83679)
### Changes:
- Create a new Backend class which contains collectives similar to that of https://github.com/pytorch/pytorch/blob/master/torch/csrc/distributed/c10d/ProcessGroup.hpp.
#### Motivation
In future PRs, the existing ProcessGroupNCCL/Gloo/UCC will be migrated to derive from this Backend class. The idea is that we will repurpose ProcessGroup to instead contain a list of Backends (ProcessGroupNCCL/Gloo/UCC) and perform dispatching to them based on tensor type.
Differential Revision: [D38839213](https://our.internmc.facebook.com/intern/diff/D38839213)
Pull Request resolved: https://github.com/pytorch/pytorch/pull/83679
Approved by: https://github.com/kwen2501