WithInterval refactorings/extensions, also layout

- WithInterval hierarchy reworked:
  - WithIntervalChained subtype introduced, to represent manually maintained chained objects; getNext() and getPrevious() moved down
  - WithIntervalContiguous subtype introduced, to represent automatically maintained contiguous objects; getPredecessor() and getSuccessor() introduced (near synonyms to getNext/getPrevious, slightly different semantics)
  - UpdateDates, SucceededBy, PrecededBy static helper classes moved down to WithIntervalContiguous
    - UpdateDates renamed to ChangeDates
    - SucceededBy and PrecededBy combined, renamed to SucceedPrecede
- reworked implementations of WithInterval*
  - AgreementRole, FixedAssetRole and AgreementRoleCommunicationChannel implement WithIntervalContiguous
  - Agreement, LeaseTerm and TaxRate implement WithIntervalChained
- added actions to start off sequence of contiguous WIs (called "createInitialXxx" following naming convention of LeaseItem#createInitialTerm)
  - renamed Agreement#addRole to Agreement#createInitialRole
  - added FixedAsset#createInitialRole
  - added AgreementRole#createInitialCommunicationChannel (cf Agreement#create...)
- existing FixedAsset#addRole recast as FixedAsset#addRoleIfDoesNotExist, made programmatic
- introduced ChangeDates helper in WithIntervalMutable
  - refactored existing implementations to use
- merged AgreementRole#updateDates and existing AgreementRole#changeDates
  - introduced ChangeDates helper in WithIntervalContiguous
  - refactored implementations to use
- implemented getPredecessor/getSuccessor
- removed FixedAssetRoles#newRole factory method; now created through FixedAssetRole
- removed @MemberOrder and @MemberGroupLayouts throughout
- instead using .json files