Identity key change handling

re-protobuf-ize incoming accepted key changes

Pass message_id to the decryption event handler. This allows
`decryptMessage` use the message's uid in indexedDB to update the
message content once it is successfully decrypted, rather than having
to derive the message id from the IncomingPushMessageSignal.

Using this setup we no longer need the message id to be determined
solely by the properties of IncomingPushMessageSignal. Previously we
passed source, timestamp as id, but now we can revert to using randomly
generated uids
Fix tests