Adds a DestroyGuard object

To indicate to callbacks whether objects they operate
on have been destroyed.
Each message should now be used only once

Even if it is sent multiple times. This is implemented
using sequence numbers (Not yet tested).