Bug 1078520 - python client

Implement a python client.  Note to reviewers, there were a couple fairly substantial changes to the way the module in the latest commits.  It's probably best to only really look at the most recent code.
Well, we don't have immutable options because that's not how python works, but I am now caching it for each set of retries of a request.