Wire subplan_service from the DI container into _get_plan_executor() so
PlanExecutor can spawn child plans during the Execute phase. When
SubplanService is available but SubplanExecutionService is not explicitly
injected, _execute_subplans() now lazily creates a SubplanExecutionService
on-the-fly using the parent plan's subplan_config and the new
_execute_child_plan callback.
- _get_plan_executor(): retrieve subplan_service from container, pass to
PlanExecutor constructor
- _execute_subplans(): lazily build SubplanExecutionService when only
SubplanService is wired (Forgejo #10268)
- _execute_child_plan(): new PlanExecutor method that runs a child plan's
strategize + execute phases, registered as executor_fn callback
ISSUES CLOSED: #10268