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.
tests/client-server.scm (%knownhosts): Use `abs_top_builddir'

* tests/client-server.scm (%knownhosts): Use `abs_top_builddir'
  instead of `abs_top_srcdir' to fix the permission issue on `make
  distcheck' during tests.
* tests/Makefile.am (AM_TESTS_ENVIRONMENT): Export `abs_top_builddir'.
tests/Makefile.am (CLEANFILES): Update

* tests/Makefile.am (CLEANFILES): Add `server-client-errors.log' and
  `server-client-libssh.log'.
TODO: Update
ssh/key-type.c (print_key): Use `_private_key_p'

* ssh/key-type.c (print_key): Use `_private_key_p' predicate to
  determite type of the key so private key will be displayed as
  "private", not "public".
tests/key.scm ("public-key?"): Improve TC