Differentiate between forwards and backwards permutation in MultiDim

Permuting the indexes means different things for a pull vector and a push
vector. So we shouldn't have one overloaded function which has different
behaviour depending on the type of vector.