added top level support for Matrixjob

I added a new job type of Matrixjob to support jobs with axes

e.g.

        job (type: Matrixjob){
            concurrentBuild true
            matrixAxis( <Text|Label|LabelExp>', 'TEST', ArrayList<String> )   
            matrixSequential true
            matrixCombinationFilter  "TEST=='val'' 
            matrixTouchstoneFilter  "TEST=='val'" 
        }

which supports the three standard axes of node/label, node/label expression and text label

Plugins can extend the axes so I think there is a TODO to allow a closure to define the axis