Unit tests relating to database deletion and univoked/double invoked callbacks

I hope these make sense.

I've added timeouts to the tests so that un-invoked callback tests will actually fail.

The double-invoked callback test is clumsy but using extra transactions allows me to enforce ordering.

I've had to skip most of the delete tests as the current client is killed by one of them, and the missing close callbacks invalidates two of the others.  Fortunately the remaining test simply fails for relevant reasons,

I probably shouldn't has pushed that - it just makes my life easier.  I too used to live in a *nix world (actually, a unix not *nix world, it was a while ago).  I still use vim for many things and fall-back to sed when nothing else works.

I've added comments.