We probably want to type erase input and outputs of operators (and probably data_repositories), so that we can add other metadata (like partition ids, target GPUs, or table scan parameters), or so that we can hold non-cudf::table type of data, like arrow::table, hash tables, or table scan specific objects.