Made Execution models and QueryProvider more extensible, to allow interception and tweaking the pipeline eg to add, remove or reorder stages.