sasl: Rework memory handling in spice_channel_perform_auth_sasl()
sasl: Rework memory handling in spice_channel_perform_auth_sasl()

While looking at the SASL code, I noticed some memory leaks in error paths.
This commit adds a cleanup: block to free some of the memory dynamically
allocated in that function, and remove the corresponding g_free() from
the regular code flow. This should ensure that both the regular path
and the error paths free the same memory.

This fixes at least this 'mechlist' leak which I got during regular SASL
PLAIN authentication:
==3452== 6 bytes in 1 blocks are definitely lost in loss record 140 of 11,706
==3452==    at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.s
==3452==    by 0x35BAC4EE6E: g_malloc (gmem.c:104)
==3452==    by 0x5BF7CAA: spice_channel_perform_auth_sasl (spice-channel.c:1440)
==3452==    by 0x5BF9033: spice_channel_recv_link_msg (spice-channel.c:1727)
==3452==    by 0x5BFAECD: spice_channel_coroutine (spice-channel.c:2348)
==3452==    by 0x5C35D6D: coroutine_trampoline (coroutine_ucontext.c:63)
==3452==    by 0x5C35A1B: continuation_trampoline (continuation.c:51)
==3452==    by 0x31342479BF: ??? (in /usr/lib64/libc-2.18.so)
==3452==    by 0x75F2940591224CFF: ???
==3452==    by 0xE756E5F: ???
==3452==    by 0xE7589BF: ???
==3452==    by 0xFFEFFF78F: ???
==3452==    by 0x5BFCD92: g_io_wait_helper (gio-coroutine.c:43)
=

SPICE/spice-gtk,fgouget/spice-gtk,elmarco/spice-gtk,fgouget/spice-gtk,freedesktop-unofficial-mirror/spice__spice-gtk,SPICE/spice-gtk,Fantu/spice-gtk,SPICE/spice-gtk,guodong/spice-gtk,elmarco/spice-gtk,fgouget/spice-gtk,guodong/spice-gtk,freedesktop-unofficial-mirror/spice__spice-gtk,freedesktop-unofficial-mirror/spice__spice-gtk,SPICE/spice-gtk,Fantu/spice-gtk,flexVDI/spice-gtk,freedesktop-unofficial-mirror/spice__spice-gtk,flexVDI/spice-gtk,Fantu/spice-gtk,Fantu/spice-gtk,elmarco/spice-gtk,guodong/spice-gtk,elmarco/spice-gtk,guodong/spice-gtk