Instead of passing around all of these repetitive values, we pass around
an instance of the Amesbox client. There's no need for threads to have
to keep track of this information on their own. This commit also
introduces the classes needed for sharing. (Very duplicated at the
moment)