make Week iterator external (WeekIterator)

add alternate WeekdaysIterator
add week_iterator_class, weekdays_iterator_class and weekdays_only options to factory
add getOption() to FactoryInterface
add getFactory to PeriodInterface
add WeekIteratorsTest
cs fix (affects DayTest, Stubs/EventRepository and CalendarTest)

This backwards compatible PR allows a configuration in which iteration of Week objects returns just the Day objects that correspond to weekdays -- by setting the 'weekdays_only' factory option to true.