Because we access the fields of WOLFSSL_ALERT_HISTORY and WOLFSSL_ALERT directly
in do_handshake, these structs can't be opaque, or an exception will be raised
by FFI.
This ports over some of the fixes made to wolfCrypt. Some of this will
be pre-requisites for Windows support.
Build recursion fixes:
* Don't import module being built in setup.py
* Don't build the C code until we are doing binary dist or install
* Tox tests bdist_wheel instead of source
Other fixes:
* Separate out version to separate file for modifying
* Update copyright dates
* Unification of _build_ffi and _build_wolfssl
* Bumps to wolfSSL 5.1.1
* Fixup `make clean`
* Move `wolfssl` src to root
* Switch test from DigiCert to GlobalSign (`python.org` ditched DigiCert
years ago)
* Make SSLContext call `wolfSSL_Init()` which fixes a few issues
* Make `setup.py` compile CFFI and wolfSSL C code
* Fully enable SSLv3 support
* Add TLSv1.3 support
* Fix bug in `wolfSSL_Free()` usage
* Update `tox.ini` to a currently supported platform