Reduced memory usage of MultiPermutation object.

Since the last entry of each permutation is redundant, we can skip that part for saving date in the MultiDimArrayLong object. The only downside is that at the moment, MultiPermutation cannot hold data when the init vector is such that there is effectively only a single permutation (resulting from a vector of one or more 1s).
Reduction of memory use MultiPermutation: part 2

Now we not only cut of the last element of a given permutation, but take into account the non-independency (non-overlapping) of earlier elements as well. Also included more tests to verify independency ("no_bleeding") of data elements when accessing.
Added note about experim. nature of te-symbolic.
Allows skipping tests if a permutation is valid.

This is useful in places where we iterate over permutations and have thus already ensured that the permutation is valid, and do not have to test it again when setting or getting. Results in a speed increase in `te-symbolic` of about 20%.
Added a simple profiler.

If the flag `ENABLE_PROFILING` is enabled in `te-symbolic` or `te-extended`, the individual tasks are registered and the total CPU time for each task is listed at the end of the program. Should help to identify which are the points in the evaluation which are really taking the most time to compute.