public static <T> Stream<Stream<T>> of(final List<T> items) {
        return LongStream.range(0, factorial(items.size()))
            .mapToObj(no -> permutation(no, items).stream());
    }
General Permutation support from
http://minborgsjavapot.blogspot.com/2015/07/java-8-master-permutations.html

@author Per Minborg
common-parent/combinatorics/src/main/java/com/speedment/common/combinatorics/internal/PermutationUtil.java