JENKINS-15380. Add some length checking before trying to substring.
Compare string length directly in if to get a shorter method.
Unittest hudson.cli.ListJobsCommand
List Jobs recursively in hudson.cli.ListJobsCommand
simplify isReadyToRestart
Fixed confirmPOST JS utility not working with CSRF protection enabled.
[JENKINS-14362] Switch to jzlib for GZIP streaming.
[FIXED JENKINS-17276]

Noting the fix.
Merge commit '9d8ee80' into rc
back to 1.513
Stapler ≥2.11 to use
Merge branch 'master' into JENKINS-14362-jzlib
Added basic abstraction for authenticating Executors
PersistedList now implements List, not just Iterable.

This required bridge method injector that maps boolean->void
run the build under the designated Authentication objec
Instead of authenticating Executor, authenticating AbstractProjects.

This is necessary because a part of the access control is determining which Executor can accept which Queue.Task, so we can't have the authenticator taking Executor as a parameter.

I briefly thought about changing ExecutorAuthenticator to authenticate Queue.SubTask, but doing this intelligently is very difficult as an authenticator wouldn't really be able to make any sensible decisions unless it checks for specific subtypes (think of the dist-fork plugin and the remote terminal access plugin that implements Queue.Task.) So I made the change to have it accept AbstractProject, which is really the primary use case anyway.

The relevant classes are renamed to better represent what it does now.
Have the scheduling algorithm honor the permissions
tweaking the wording a bit
Grouping related messages together
IntelliJ complains about this. Not sure if it's a real problem