connection: clean up code nesting in kdbus_conn_kmsg_send

also, closes a lock gap
connection: pass return code from kdbus_conn_queue_alloc() to sync waiter
connection: use del_timer_sync()

and check for disconnected connection in the worker.
connection: hold lock for kdbus_conn_reply_finish()
Revert "connection: hold lock for kdbus_conn_reply_finish()"

This reverts commit 1d3a6d1db374ca57c4c8402de12409cc5440b50c.
connection: properly ref the connection in kdbus_conn_move_messages()
fix typo
connection: free used reply directly

Makes to logical flow clearer.
connection: use kdbus_conn_queue_remove() in kdbus_conn_disconnect()

This takes care of the prio rb tree takedown properly.
connection: turn around cleanup logic in kdbus_conn_move_messages()
connection: hold conn_src->lock when checking for reply_wait->conn_waiting
connection: finish replies when disconnecting
connection: add 2 FIXMEs
connection: don't store conn_waiting in kdbus_conn_reply

Also, keep a local flag in kdbus_conn_kmsg_send() and don't rely on
reply_wait, which can be deallocated in async cases while we hold a
pointer to it.
kdbus_conn_move_messages: finish reply_list entries
TODO: update
connection: re-arm timer with lock held
connection: handle return from wait_event_interruptible_timeout() correctly
connection: ensure queue.reply is NULL for moved messages
connection: remove replies from list asap

move list_del(&reply->entry) from kdbus_conn_reply_free() to
kdbus_conn_reply_finish(). Hence, make sure all callers of
kdbus_conn_reply_finish() iterate reply_list with
list_for_each_entry_safe() and hold a lock to the connection holding the
list.