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.
Might be worth putting a comment on this line and the equivalent in the block below to explain what they're doing