Simplify and enhance schedules

Simplify SchedulePeriod, removing frequency, roll convention and type
Add frequency and roll convention to Schedule
Determine schedule type on the fly

Provide additional mechanisms to manipulate a schedule
- whether a schedule is a term period
- get initial/final stubs and regular periods
- merging/splitting a schedule

DayCount ScheduleInfo altered to operate on schedule
Any value in:
```
int start = getInitialStub().isPresent() ? 1 : 0;
int end = periods.size() - (getFinalStub().isPresent() ? 1 : 0);
return periods.subList(start, end);
```
If necessary, you could check if start and end were zero but would be surprised if there was much perf impact from not doing so.