Zero the CB structure at allocation time

Also only set structure members if the corresponding python variable is
not None, avoid using GSS_C_AF_NULLADDR by default as address values are
protocol dependent, only the caller knows what is the convention for each
application protocol.

Signed-off-by: Simo Sorce <simo@redhat.com>
Fix a bad sizeof call in raw API channel bindings

Commit 12e88c37bf5b2d1c60144c980f82fb74e8fa2b6b miscopied the
sizeof call, allocating the size of a pointer instead of the size
of the underlying struct.  This fixes that.
Note that address_type of None is AF_UNSPEC

This commit adds a note indicating that setting addrtype to 0
(as done by the calloc statement above) in the channel bindings
struct is equivalent to setting it to GSS_C_AF_UNSPEC
(i.e. what was AddressType.unspecified).

Additionally, it uncomments the `null` member of AddressType
(which is *not* equivalent to `0`) and comments out the
`unspecified` member.
Return Token and Reraise Exception on `complete`

This commit makes it so that when an exception is thrown in
the `step` method of SecurityContext, if it has an attached token,
the token is returned and the exception and traceback are saved.
The exception and traceback will be reraised by `complete` the next
time it is checked.
Check last error in all SecurityContext methods

Previously, `_last_err` was only check on complete.  It is now
checked on every method.  This ensures that the error actually
gets thrown, and makes it more likely that the stored traceback
actually gets deleted.  This functionality can now be disabled
by setting the `__DEFER_STEP_ERRORS__` class variable in
`SecurityContext` to `False`.
Don't manually save tracebacks in Python 3

Python 3 automatically saves the traceback with exceptions and uses
it when reraising the exception, so we don't have to manually save
the traceback.  Also, just use "raise" instead of six.reraise
when simply choosing to raise the exception without saving it.