[Ordering] Add new PermutationOrdering

The permutation ordering is derived from the lexicographic ordering, it enables the custom permutation of DOF indices in an arbitrary way. To this end, the user hast to hand over a std::vector<size_t> perm to the PermutationOrderingTag which contains at position i the new index perm[i] of the old index i (old index given in terms of lexicographic ordering). After setting up the standard lexicographic ordering, the permutation is applied to yield a reordered DOF vector.

Obviously, perm should have the same size as the GFS it is belonging to. Additionally, perm should be a permutation, so it should contain all values from 0 to gfs.size()-1, if in an arbitrary order.