Defined an interface for the implementations.
Updated the Permutations facade to use the Generator interface.
Encapsulated the logic in Permutations that instantiates the correct
Generator.
Switched the implementations to conform to the interface.
Updated the contract for getPermutation() to reset the iterator
cursor at the given permutation index.
Added some tests for getPermutation().
Merged in direct-access. Added getPermutation() public method and an interface that hides the two implementations.