TimeProvider class created
Customer changed to take time from TimeProvider when creating new products to purchases
Test utility class TimeMachine created. Test method for new rule for isSpecialOffersEligible refactored to use id. Product class made immutable again.
All tests refactored to use TimeMachine