Fix a GC issue: Keep reference to a parent object in smobs

Fix a GC issue: Keep a reference to the parent session in channel and
message smobs to prevent the session from premature GC'ing.  Without
the fix GC could free a session even if there are live channels and by
that break the channels.

Reported by Ludovic Courtès <ludo@gnu.org>

* ssh/channel-type.h (channel_data): Store a reference to the parent
  session.
* ssh/message-type.h (message_data): Likewise.
* ssh/channel-type.c (_ssh_channel_to_scm): Change argument list.  All
  callers updated.
  (guile_ssh_make_channel): Update.
* ssh/message-func.c
  (guile_ssh_message_channel_request_open_reply_accept): Update.
* ssh/server-func.c (guile_ssh_server_message_get): Store a reference
  to a session in the message smob.
* NEWS: Update.
Merge branch 'master' into gc-bug-fix

Conflicts:
	ChangeLog
ssh/key-type.c (free_key_smob): Always free the SSH key on GC'ing

* ssh/key-type.h (key_data): Remove `is_to_be_freed' field.
* ssh/key-type.c (free_key_smob): Always free the SSH key on GC'ing.
* ssh/key-func.c (guile_ssh_private_key_from_file)
  (guile_ssh_public_key_from_private_key)
  (guile_ssh_public_key_from_file): Likewise.
* ssh/message-func.c (get_auth_req): Likewise.
* ssh/session-func.c (guile_ssh_get_server_public_key): Likewise.
Merge branch 'master' into gc-bug-fix
Merge branch 'master' into gc-bug-fix
Merge branch 'master' into gc-bug-fix

Conflicts:
	ssh/channel-type.h
	ssh/key-type.c
Merge branch 'master' into gc-bug-fix
Merge branch 'master' into gc-bug-fix
Merge branch 'master' into gc-bug-fix
Merge branch 'master' into gc-bug-fix
ssh/channel.scm (channel-get-session): New procedure

* ssh/channel-func.c (guile_ssh_channel_get_session): New procedure.
* ssh/channel-func.h (guile_ssh_channel_get_session): Likewise.
* ssh/channel.scm (channel-get-session): Export.
* tests/client-server.scm ("channel-get-session"): New TC.
* doc/api-channels.texi (Channels): Add description of
  `channel-get-session' procedure.
* NEWS: Update.
ssh/channel-type.c (mark_channel): Mark the session

* ssh/channel-type.c (mark_channel): Mark the session.
* ssh/message-type.c (mark_message): Likewise.
Merge branch 'master' into gc-bug-fix

Conflicts:
	ChangeLog
Merge branch 'master' into gc-bug-fix

Conflicts:
	ssh/channel-type.c
	ssh/channel-type.h
	ssh/message-func.c
ssh/message.scm (message-get-session): New procedure

* ssh/message.scm (message-get-session): New procedure.
* ssh/message-func.c (guile_ssh_message_get_session): New procedure.
* ssh/message-func.h: Likewise.
* tests/server-client.scm ("message-get-session"): New TC.
* doc/api-messages.texi (Message Handling): Add description of
  `message-get-session'
* doc/version.texi: Update.
* NEWS: Update.