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.
Algorithm is not configurable... This is hardcoded! and should not be part of the config object.

Part of the reason I don't support mutating options/config after a client is created is that I can create some cached properties... Such as parameters for hawk, where algorithm property must be provided. But we do not allow users to configure this.