bind: Correctly free all memory in ssh_bind_free().

Thanks to Jacob Baines.
client: use ssh_channel_do_free in ssh_disconnect

Ensure to use 'ssh_channel_do_free' in 'ssh_disconnect', when removing and
free'ing up a session's channels.  This matches the behavior in 'ssh_free',
and is necessary to fully free any channel which may not have been closed
completely (see usage of flags SSH_CHANNEL_FLAG_CLOSED_REMOTE,
SSH_CHANNEL_FLAG_FREED_LOCAL).

Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
channel: fix setting of channel->flags

Fix the setting of 'channel->flags' to use '|='.  Before this
change, one bug symptom can be that channels are never fully
free'd via ssh_channel_free, resulting in memory leaks.

Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
tests: Fix pki test with gcrypt.
tests: Use new auth API in the torture_auth test.
tests: Use new auth API in the torture_session test.
tests: Fix non-blocking auth tests.

The ssh_userauth_none() call should already be non-blocking. However
this this function is broken in non-blocking mode. It should reveal the
existing bug.