insertMessage abstract method
Inserts a message (with deduplication).
Returns the actual primary key of the row — either the existing local
message's PK (if dedup matched) or message.id for new inserts.
Implementation
Future<String> insertMessage(Message message);