Add equality comparisons to c10::List (#34856)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/34856
This PR adds Python-like equality comparisons to our List type.
- `operator==` performs equality by value.
- `is` performs equality by identity.
The overall goal is that I want to define equality on `IValue` to avoid
people implementing their own broken versions. So, we should have
equality reasonably defined on all types that `IValue` can be.
smessmer raises the concern that C++ people expect `operator==` on
reference types to test identity. I think that's a reasonable concern,
but in practice, it seems that people are defining equality functions to
do it by value anyway, just poorly. My claim is that if we just tell
people that TorchScript types behave like Python types, it will not be
super confusing.
Test Plan: Imported from OSS
Differential Revision: D20483462
Pulled By: suo
fbshipit-source-id: ba2909daa6778924293ed6ef456ab9fc84215442