Mirror the contact's changes to the self-destruct timer
This branch records the self-destruct timer from incoming messages and updates the local timer to match the remote timer when appropriate:
- If the incoming message has an earlier or equal timestamp to the latest message sent or received so far, we don't update our timer
- If we haven't changed the local timer since sending our last message, we mirror the remote timer
- If we have changed the local timer since sending our last message, we only mirror the remote timer if it has changed; messages that continue to use the old timer don't overwrite our local change
Closes #1832 (closed).