Don't keep Extension instances

All instance of Extension extended class must be fully managed by
Jenkins instance. So those must not be reused by other instances.

This patch fixes such issue. Targets are:

ToGerritRunListener
DependencyQueueTaskDispatcher
In addition, the above class is changed to final class. Because getInstance() has possibility to return instance of extended class if those are extendable.

Fix for JENKINS-24575
I guess the list could be empty as well causing an indexoutofbounds on line 110. so adding " || dispatchers.isEmpty()" would make it safer.