PLT-469 - Value schedule

Add `ValueSchedule` and `ValueStep`

Allows the representation of a value that changes in a schedule, such as notional, rate, spread and gearing. It consists of one initial value and a series of steps that change it. Changes must occur at schedule period boundaries, and can be expressed by an exact date or period index.

Includes a `resolveValues()` method to convert the schedule to actual values (classic for loops seem to make most sense for this logic).

Test coverage 100% in non-auto-generated code.
I'm confused by this comment. If the actual underlying array is accessible then the list isn't really immutable. What are the actual semantics? Does Doubles.toArray() copy the backing array? If not I think the comment should be more specific.