Concept to avoid having to expand positions with enumerate: add an extension point to compute the maximum vectorizable size, which is the minimum size of the inner dimension. Currently only function_index and adjfun are optimized with this. Other SIMD algorithms (namely inner and outer fold) also need to take it into account.
moving max_vect_size to its own file
adapt inner_fold for max_vect_size
inner_fold optimization: maintain vector and scalar sums in parallel, only reduce once at the end instead of once per block.
adapt outer_fold for max_vect_size