Improve efficiency of parallized likelihood calculations

  o RooAbsTestStatistic

    - Introduce new likelihood parallelization strategies for simultaneous pdfs. Boolean
      strategy flag is replaced with enum with new options

            false --> BulkPartition (split calculation of each L component into equal bulk partitions)

            true  --> Interleave (same, but following interleaving strategy, works better for histograms
                                  as zero-bins are likely to be spread more evenly over processes)

                  --> SimComponents: new strategy that assign each RooSimultaneous component completely
                      to a single processes, while distributing components over processes. This
                      benificial for likelihood components where a substantial fraction of CPU
                      time is spent in normalization (which would be incurred in very process
                      in BulkPartition and Interleave strategies). Note that wall-time performance
                      is strongly dependent on likelihood components sharing parameters. In the
                      limiting case that no parameters are shared between component this strategy
                      is ineffective, as only a single process would be active most of the time
                      [ since most minuit-induced likelihood calculations change a single parameter ]

                  --> Hybrid: Bulk partition for all likelihoods with >30 (weighted) events  
                      [ #dataset entries count, not the sum of weights ], SimComponents for
                      small datasets. This mode is more efficient that BulkPartition for many
                      HistFactory models that can feature a large number of samples with
                      few bins.

     - Distribute calculation of extended likelihood term over processes (instead of assigning
       them all to the first processes), using a deterministic algorihm based on module of
       crc32 of component name 


     - Deploy RooRealMPFE objects in multi-process master mode in master/slave configuration


  
  o RooRealMPFE

    - Introduce concept of master/slave mode. In this mode only the master determines which
      variables have changed value and/or const-status and thus need to be considered for
      updating on the server-side. The slave nodes simply take the information from the
      master. In master mode deploy fast RooAbsReal::isIdentical() taking advantage
      of prior knowledge that LHS and RHS are identical objects

    - In calculate() presend Retrieve message immediately after Calculate message to
      reduce IPC delays in getVal() 

    - Consolidate the three read/write operations corresponding to a Retrieve message
      into a single one

    - Bug fix in passing of OptimizeConst: also pass doTracking flag (mode 2 opt)


  o RooMinimizer

    - Prevent profile timer from starting at construction, but rather when first profiled
      action is performed


  o RooAbsArg

    - Track status of constant status with a boolean flag in addition to a string
      attribute to speed up execution time of isConstant(). 


  o RooChi2Var, RooXYChi2Var, RooAbsReal, RooNLLVar, RooAbsPdf, RooGlobalFunc, RooDataWeightedAverage

    - Follow bool->enum type change for parallalization strategy flag


  o RooVectorDataStore

     - Optimize code: in recalculateCache() omit loop over data if no components need updating


  o RooAbsReal, RooAbsString, RooAbsCategory

    - Introduce new isIdentical() method that is faster than operator==() as it can optionally
      assume that the RHS of the same types as the LHS


git-svn-id: https://root.cern.ch/svn/root/branches/v5-34-00-patches@49228 27541ba8-7e3a-0410-8455-c3a389f83636
  o RooRealMPFE

    - Fix compiler error (accidentally removed include file)

  o RooAbsPdf

    - Update documentation of NumCPU() feature of fitTo() and createNLL()


git-svn-id: https://root.cern.ch/svn/root/branches/v5-34-00-patches@49229 27541ba8-7e3a-0410-8455-c3a389f83636