This standardizes how we convert our LogicalPlan::Extensions into the pipeline graph. I've added a new trait, ArroyoExtension, which returns the outgoing ArroyoSchema for the node and, given the input ArroyoSchemas, the corresponding LogicalNode and LogicalEdges. I've also moved all of the extensions into their own files under the extension module.
This standardizes how we convert our LogicalPlan::Extensions into the pipeline graph. I've added a new trait, ArroyoExtension, which returns the outgoing ArroyoSchema for the node and, given the input ArroyoSchemas, the corresponding LogicalNode and LogicalEdges. I've also moved all of the extensions into their own files under the extension module.