Add rudimentary pattern rewrite matching generation.
* Start very basic (about as basic as possible) with the pattern rewrite generation by only
- Matching single node dags,
- Single output, single result,
- No constraints on inputs/outputs.
- No attributes (only operands)
* The matcher generates C++ code akin to what is currently manually written.
- This is very much not the final end state, and only intended for the short term;
* Always generate the default builder method to make it easier to generate calls;
- Also add additional builder method for TFL::Add as attributes are not yet supported;
* Replace TF Add -> TFL Add matching using this generation;
* Introduce a conceptual textual namespace in the op registry
- Will allow importing multiple dialect's op registry
- Avoids needing to do anything special with tablegen or define a custom DSL;
= I really want to do a custom DSL but this urge could just be as its fun :) So defer for now. From this structure we can dump out another structured form if needed;
- Add a mapping from <namespace>_<op> in the op_gen and pattern rewrite gen
= This allows placing ops in different namespaces from the same op registry which is convenient, esp. if we want to consider subnamespaces in future;
* Update tfl namespace to TFL to match TF and XLA;
PiperOrigin-RevId:
225155164