[fixed JENKINS-18393] Do not list any ItemGroup in list-jobs CLI command

List item group recursively.
Add @Bug(18393) annotation
Merge branch 'master' into jenkins18393
Merge branch 'master' into jenkins18393
Still a work in progress
further simplification
needs to be checking a different method
more simplification and bug fix
killComputer interrupts executors, so no need to do it separately
improving error reporting
killComputer only interrupts idle threads
if an executor is interrupted before it's started, just throw it away
Experiment revealed that a thread's interrupt flag cannot be set before it's started:

The following code prints false.

    public static void main(String[] args) {
        Thread t = new Thread() {
            @Override
            public void run() {
                System.out.println(Thread.currentThread().isInterrupted());
            }
        };
        t.interrupt();
        t.start();
    }
this method needs no synchronization
added @Terminator as the opposite of @Initializer
parked can be a local variable now
fixing a test failure
added another Executor-related utility class
When the executor is finished, rerun the queue maintenane to allocate more tasks
A Trigger timer thread is used for many things, so its execution can delay significantly.

Use our own queue