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.
Where can the duplicates potential occur? Inside the list returned from generateBackwards/Forwards? Or only on the explicit stub dates? If the former then could we change to disallow, if the latter then don't you just need to check against the first/last elements of the list rather than iterating all?

Also this would allow you to avoid the reliance of the returned list being mutable which isn't great - you should just be able to use an ImmutableList.Builder