Refactoring and Ideal Pile Shuffle

Added a function that returns the least number of piles needed to reach
an identical state in the least number of shuffles.