Prevent _PassphraseHelper.raise_if_problem() from eating exceptions (#581)

* Modify tests to detect empty crypto.Errors from load_privatekey

This reproduces #119 and #456.

* Prevent _PassphraseHelper.raise_if_problem() from eating exceptions.

This resolves #119, resolves #456.

`_PassphraseHelper.raise_if_problem()` always flushes the OpenSSL
exception queue, but does not always raise an exception. In some cases,
other code attempts to raise an error from OpenSSL after
`raise_if_problem()` has flushed the queue, thus causing an empty
exception to be raised (i.e. `raise Error([])`).

This commit modifies `_PassphraseHelper.raise_if_problem` to flush the
OpenSSL error queue only if it has en exception to raise. Subsequent
code that detects an error should now be able to raise an non-empty
exception.

* Add CHANGELOG entry for #581.
4 files changed