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.
This functionality is nicely factored out... 

Note, that with immutable options you can build this data in the constructor, and cache it...