Use proper qp.Schema from Statements with cached plans

To fix scenarios where identity equality is expected in the Operator stack. For example, a transaction started before a DDL but not executing until after.

This takes a minimal approach, saving the Schema explicitly in the Statements that cache plans and wrapping the QueryContext when creating the cursor. This effectively shims the old Schema everywhere it needs to go. Slightly delicate but all we can do without a much set of changes.