[mlir][IR] Support op interfaces in `HasParent` trait
This commit adds support for op interfaces to `HasParent`: an op interface can now be specified as a parent.
To produce useful error messages, a new helper function `getInterfaceName` is generated for every op interface. This is similar to `getOperationName`, which is generated for operations.
This commit addresses a TODO in `TensorOps.td`.