Update Bramble protocol stack to support syncing via mailbox
When communicating via mailboxes, the max latency and thus the retransmission interval are very long, so we need to be careful about any circumstances that could cause messages to be lost.
On the sender side, if an error (such as an IO error, app crash or device crash) occurs while we're writing messages to a file, we need to ensure that those messages can be sent again after recovering from the error. Ideally this should apply to acks too.
On the receiver side, if an error occurs while we're reading messages from a file, we need to ensure that the file can be read again after recovering from the error.