Introduce a new GUC force_parallel_mode for testing purposes.
When force_parallel_mode = true, we enable the parallel mode restrictions
for all queries for which this is believed to be safe. For the subset of
those queries believed to be safe to run entirely within a worker, we spin
up a worker and run the query there instead of running it in the
original process.
XXX: This patch still needs some work yet as far as explain.c is
concerned. Instead of what happens here at present, we should have a
new Boolean inside the Gather node, maybe "bool invisible". explain.c
should look through invisible Gather nodes but not others;
force_parallel_mode should create an invisible Gather node rather than
a normal one. No effect at execution time.
XXX: I think force_parallel_mode should have three modes: on, off,
regress. When off, we act normally. When on, we push regular, visible
Gather nodes on top of plans that can support them, and display error
context as usual. The third mode, regress, turns the Gather nodes
invisible and suppresses the additional error context.