This module attempts to abstract over the notion of permutation developed
for lists by taking a split and join operation for an unknown data
structure and reiterating the definition of permutation using that. The
original list permutations can be recovered by taking split and join to be
append and unappend, effectively.

This is still speculative, since I'm not quite done with the list
permutations.