Added additional permute methods to SGVector which take external random state.
Added external random state changes to CrossValidationSplitting as well.
Added shuffle(CRandom*) methods to DynArray, DynamicArray and DynamicObjectArray for thread safe shuffling.  (e.g. parallel cross validation)
Cleaned code duplication introduced by earlier commits.  Now using ->shuffle(m_rng) for shuffling arrays.