PLAT-6795 - Fix application of EOM flag when not at EOM

Test and rework one of the many schedule generation methods.

This change ensures that the end-of-month rule is only applied if the appropriate date (start or end) is at the end-of-month. It also ensures that the rolling rule does not go beyond the end date. Plus tests.
Is endDate guaranteed to have been adjusted to be on a business day? If this block is true (presumably if the schedule has a short end) then last day in the schedule is the endDate parameter. If it's already been adjusted at the call site then that's correct. If it hasn't then it's a bug. The Javadoc doesn't specify enough about endDate for me to be sure.