Extract trait for client repository, existing impl renamed to TransientClientRepository
First pass at persistent client repo
Checkpoint - introducing persistent version of the unhandled repo, introduce event repo