Clean up Backend interface and lowering context related things (#67580)
Combine ComputationClient and BackendImplInterface
- generally, seemed like the backend interface was scattered and combining it would make it clearer
- data structures used by various backend interfaces have also been simplified
- Computation, TSComputation, GenericComputation, GenericComputationTS, CompileInstance have
been folded into one Computation base and TSComputation derived
- ProgramShape is removed in favor of aligning with the other Shape class
- Delete 'ComputationClient' interface and implementations after refactor
- Rename 'Data' to 'BackendData'
Remove unused things
- ExecuteComputationOptions, ExecuteOptions
- Op-By-Op-Executor (unused, not supported)
Clean up NodeLowering
- make it clear that NodeLowering isn't a public API, but an internal detail of TS backend
that we aim to clean up later
- Make TSNode not depend on TSNodeLowering, so TSNode can be landed sooner
- Clean up utils used in lowering_context.h
- Separate NodeLowering from ShapeInference, which is a purely functional thing and also
will be removed over time