Add Message template class
Change addDiagnosticMessage argument type to Message

With String, we cannot translate the diagnostic message later.