Checking error codes and cleaning up when errors occur in EvpKeyAgreement

Also added a test to actually exercise the DH agreement path. There's more work to be done... ideally we should be triggering all of the error paths to exercise the code.

FREEBIE