Added a destroy notification to the client model.

This should allow me to move the client destruction handling from inside
XEvents to ClientModelEvents. Note that this change also includes
modifications to the unit tests to account for the new change.
Implemented the DestroyChange handler.

This allows ClientModelEvents to clean up when a client is destroyed.

Other small changes:

 - Changing 'unmap_win' to 'destroy_win' when getting rid of
   placeholders and icons.
Added some defensive checks and other fixes.

 - If ClientModel::remove_client is called on a non-client, then it returns.
   This actually happens on a semi-frequent basis, and thus prevents SmallWM
   from crashing.
 - ClientModel::find_desktop and ClientModel::find_layer return default
   values if their arguments are not clients.
 - PointerLess, used for constructing a std::map in UniqueMultimap, now
   safely compares NULL pointers.