Java generic Iterator implementation to generate permutations and combinations.
Uses the algorithm described here http://en.wikipedia.org/wiki/Steinhaus%E2%80%93Johnson%E2%80%93Trotter_algorithm#Even.27s_speedup and the clear description of that algorithm here: http://www.cut-the-knot.org/Curriculum/Combinatorics/JohnsonTrotter.shtml