Change how the Authorize.net auto-discovery works.

This was precipitated by Authorize.net changing their response in the
sandbox for the wrong transaction ID.  We can no longer call
retrieve('0') to the sandbox API.  It was the favorite call because it
is idempotent and we don't have to worry about changing any data by
calling it, however it had some disadvantages, namely that the
Transaction Details API is not always enabled for every customer.  We
switched to voiding a non-existent transaction because that endpoint
should exist for every customer.

Additionally, the auto-discovery code has been moved out of __init__,
which means that the gateway URL isn't discovered at configure time, but
it also means that your entire application doesn't fail when you
Authorize.net decides to change their response codes.

Co-authored-by: Gavin Wahl <gwahl@fusionbox.com>

Conflicts:
	dinero/gateways/authorizenet_gateway.py