Fix C/P fuckup
Get the transaction if we have a name for it

If there is no transaction, we simply go on trying to find it, instead
of cleaning up and possibly forgetting to check whether it is stored
somewhere.
Add missing getref() in ws_deserialize()

Get reference on message here, so we are sure we keep it as long as we
need it.

Pair-programmed-with: Marcel Muller <com2040@gmail.com>
Merge pull request #531 from matthiasbeyer/add-shutdown_transaction_support

Add shutdown transaction support
Add missing forward declaration
Add proper (de)initialization to abstract shell surface
Remove unused forward declaration
Adjust initialization of ws_shell_surface
Adjust initialization of xdg_surface
Move methods for setting the position to the abstract surface
Fix recognicion of repeated events

Turns out the value is not `1` for repeated events, but `2`. This means
that:
 * my previous approach broke because I was comparing the value directly
 * instead of looking things up in an array, I can just look at the
   value and use _this_ as a base for recognicion of repeated events
Add missing reset of the hotkeys' state
Merge pull request #539 from neithernut/mod-compositor-consolidate_shell_surfaces

Mod compositor consolidate shell surfaces
Merge pull request #537 from neithernut/fix-hotkeys-keypress_evaluation

Fix hotkey evaluation
Change ws_object_hash() to return errno on failure
Add comment why ws_error_reply_get_code() doesn't do locking
Add comment why ws_error_reply_get_description() doesn't do locking
Add comment why ws_error_reply_get_cause() doesn't do locking
Add getref() in ws_event_get_name()
Add locking in ws_transaction_push_statement()