Add NewClientWith constructor
This adds a new constructor to build Clients which operates on a Config
struct rather than positional parameters. This will enable adding new
parameters in the future without breaking the API.
To begin with, this introduces a new URL parameter that wasn't
previously available. An example of another parameter that could be
added in the future is the timeout (to override the default timeout).
Existing constructors have been transitioned to the new one because it
implements a superset of their functionality.
Minor note: The Tor constructor wasn't respecting the default timeout
but with this version, it does.
Resolves #8