fix libressl error/refactor some error handling (#3609)

* add libre so I can see the error

* add the libre error needed and refactor error handling a bit

We were historically matching on lib + func + reason, but func is
somewhat unstable so now we match on lib + reason only. Of course, in
this case libressl changed both lib and reason so it wouldn't
have mattered. All error handling from the error queue in
openssl is an illusion

* fix a typo, probably an unneeded branch

* review feedback

* refactor tests to support libressl

insert additional rant about libre here, although admittedly these tests
were assuming stability where openssl itself guarantees none

* better assert, fix flake8
7 files changed