PLT-427 - Periodic schedules

Add data structures and logic to generate schedules
Move Frequency and RollConvention
Add StubConvention

Data structure `PeriodicScheduleDefn` is used to define a periodic schedule. The roll convention, stub convention and explicit dates are combined with the frequency to create the schedule in a logical manner. The result is a `PeriodicSchedule` formed of one or more `SchedulePeriod`. This schedule should be capable of use by swaps and bonds, although bond schedules tend to be simpler.
periods.stream().sort(Comparator.naturalOrder())... ?