Give messages IDs.
IdentifierSource should return an Id.
Messages take Ids as parameters.
Clean up tests to compare Ids by equality, not by using Id::getValue.
MessageRenderer takes Ids.
Output the user as part of the message.