Prob combined moves

This adds the option to combine TakeSteps with specified probabilities.
In contrast to TakeStepPattern, the steps are then iterated over according to their specified relative probabilities (frequencies, weights, ...).

This goes back to the discussion about TakeStepPattern we had earlier.
why use a shared_ptr here?  Couldn't you just make it statically allocated?

declaration

    std::discrete_distribution m_distribution;

intialization

    m_distribution(m_weights.begin(), m_weights.end())

usage

    index = m_distribution(generator)