Sorter now caches more info about Queue.Item

 * Cache moved to new class (QueueItemCache)
 * Cache uses WeakHash to cache data after item left Queue
 * Caches more info about the item to minimize need for re-lookup
(ItemInfo)
Added PrioritySorterPLugin and moved initialization

All initialization is now done from the PrioritySorterPlugin
this includes legacy check and initial queue sorting.
Refactored MatrixBuild priority lookup to use QueueItemCache
Added UpstreamCauseStrategy.

This strategy will give the triggered Job the same priority
as the Build it got triggered by.
Fixed NPE when MatrixBuild is missing in cache.
Removed ActualAdvancedQueueSorterJobProperty.

Removed ActualAdvancedQueueSorterJobProperty now uses 
QueueItemCache, this reduces Job-lookups and iterations 
over all Jobs that was used before.
Refactoring to use callback/service pattern for assigning values.

Revering flow to be able to provide several values to 
the caller.
[JENKINS-11997] Consider jobs in the Executors for priority sorter

Introducing "Run Exclusive", with "Run Exclusive" set on a 
JobGroup only Jobs from that JobGroup will be started
until no more Jobs from that JobGroup is in queue being run.
Startup sorting should be done in Advanced Mode
Added ItemStatus to ItemInfo
[JENKINS-20995] Default Priority always shows 1-5

Fixed problem where Default Priority Dropdown
always showed 1-5.
Updated default handling to reuse set values 
when switching strategy.
Removed development/debug printing.
Fixed NPE when onEnterBuildable() is called during startup.
Removed unused js-file.
Removed Brad as developer not render this on wiki.
Fixed issue where Job is not in any JobGroup.

Added simple tescase running in empty setup and fixed 
issue where a Job is not in any JobGroup.
Simple test with and without configuration.
[TEST] Assert Jobs start order.

Added feature to assert that Jobs gets started
in the expected order.
[TEST] Added simple test framework

Started with a simple framework for scheduling Jobs 
and validation the priority and start order.
[TEST] Changed timing and setup.

Changed timing so that Jobs are clearly separated 
in time. Made sure tests runs with one  executer to 
avoid races when starting builds.