Correct documentation build
Clean up base -> raw transition
Reflect current repository layout in docs
Make the docs French

Introduce sphinxcontrib-napoleon for docs and bring them into compliance with
that module.
Use named tuples for returns in documentation

These are pre-existing in named_tuples.py and are already used elsewhere, so
we should use them in the documentation as well.

A pleasant side-effect is that napoleon is much happier to parse these.
Don't allow returning a bool in verify_mic()
Hide display_status()

display_status() is not needed in the general case and so has been renamed to
_display_status() to avoid confusion.
Attached unwrapped message to EncryptionNotUsed

Previously, in the high-level API, if we expected encryption and
did not get it, we would raise an exception, and discard the unwrapped
message as a side effect.  Instead, we now attach the unwrapped message
to the exception, so that it can be examined.
Fixes to IntEnumFlagSet and IntEnum Update

This patch transitions from `flufl.enum` (which is abandoned/deprecated)
to `enum34`, which is a direct backport of the `enum` package in Python
3.4, and implements PEP 435 exactly.

Additionally, this patch fixes a couple bugs in `GenericFlagSet` and
`IntEnumFlagSet`, and adds unit tests for the relevant functionality.
Add encrypt/decrypt methods to SecurityContext

This patch adds the encrypt/decrypt methods to SecurityContext.
The function identically to how wrap/unwrap functioned before,
except that encrypt always uses encryption if the security context
supports it.

`wrap` and `unwrap` have the same parameters as before, but will no
longer throw errors if encryption was expected and not used.
Additionally, `wrap` and `unwrap` return named tuples like the underlying
"raw" API methods (the tuples contain the message, whether encryption
was used, and (for unwrap) the QoP used), whereas `encrypt` and
`decrypt` simply return byte strings (like `wrap` and `unwrap` used to).

In general, users should use `encrypt` and `decrypt`.  `wrap` and
`unwrap` are intended for protocols like SASL, where an unencrypted
message must be sent during negotiation but after an encrypted security
context has been established.
Rename get_mic and verify_mic in high-level API

`get_mic` and `verify_mic` have been renamed to `get_signature`
and `verify_signature` in the high-level API.  The new names are
more intuitive and clearer to people who have not used GSSAPI.
Fix _display_status import issue in test_base

Prefixing display_status with an `_` causes it to not
be imported with `import *`.  This caused an issue in
test_base.py.  This patch rectifies the issue.
Introduce Channel Bindings Support

This commit introduces support for channel bindings.
The `ChannelBindings` class, found in `raw`, may be used
to create a set or channel bindings that may be passed to
both the high- and low-level APIs.  Additionally, a new
`IntEnum` named `AddressType` has been introduced; `AddressType`
contains potential values for the initiator and acceptor address-type
fields in the `ChannelBindings` class.
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.
More relics of the base->raw migration.