-Updated Enumeration to return an iterator based on size
-Updated EnumerationExample to reflect the API changes
-Updated EnumerationState API to be more generic
-Updated CombinatoricState to reflect API changes
-Added more assertions for EnumerationState
-Replaced asserts with throwed exceptions as I have discovered that
	assert is not to be used for production code or as error handling
-Made CombinatoricState handle invalid state ( calling next when
	hasNext() is false)
-Added a Cartesian product state and  generator.
-Added utility method for examples.
-Refactored other examples to reference new utility method.
-Added example for cartesian product