feat: add EventsNormalizerTrait for ADE data normalization
Add a normalization layer for raw ADE event data:
- parseAdeDate(): convert ADE d/m/Y dates to Y-m-d
- parseAdeTime(): truncate HH:MM:SS to HH:MM
- extractEventResources(): normalize nested resource nodes
- extractEventActivityName(): resolve nested activity names
- normalizeRawEvents(): apply all normalizations to event list
Include 18 unit tests and 3 usage samples.