port sub to structured, fix sub.Scalar bug (#53679)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/53679
This PR ports sub to be a structured kernel.
It also fixes a bug with `sub.Scalar`. `sub.Scalar` is currently listed as a `DefaultBackend` op, but it isn't actually backend agnostic- it calls into `native::sub`, which is CPU/CUDA-specific. That can cause bugs like [this](https://github.com/pytorch/pytorch/pull/51758) for other backends like MKLDNN. `sub.Scalar` is now **really** backend-agnostic, since it performs a redispatch to call the overload.
Test Plan: Imported from OSS
Reviewed By: ezyang
Differential Revision: D27029820
Pulled By: bdhirsh
fbshipit-source-id: d24b435a42f4c505bc763ea77672956f81ad3e26