This commit represents a first step in modularizing the Andrews & Arnold
SGX in particular, and setting up a pattern for future Go-based SGX
implementations more broadly, by breaking out the notion of a message
"provider", that is, a remote API integrated against in sending and
receiving messages.
Modularizing at the level of the provider here will allow unit tests to
be written against a mock provider in the future, but this commit also
integrates tests against the concrete A&A provider, using a mock HTTP
client.
Changes here have been kept intentionally minimal to reduce the diff;
future efforts will see us pull functionalities into their own packages
to better maintain separation of concerns.