layernorm and ne constraints + tests (#80909)
- The constraints for ne are the same as the ones for tensor addition
- Constraints for layernorm ensure that the input has the form `(*, d1, ..., dn)` where `d1, ..., dn` are consistent with the normalized_dim of the form `d1', ..., dn'`. Since we are using gradual types, they do not have to be equal. The final result is then equal to the input and of the form `(*, d1, ..., dn)`
Pull Request resolved: https://github.com/pytorch/pytorch/pull/80909
Approved by: https://github.com/jamesr66a