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.
It has pros and cons... when I first met it in the aws-sdk I was a bit doubtful about it.. but immutability is more predictable.

Also there is the fact that using global config is really a bad thing. It works for small (very small) things, but when programs grow large it's better to not configure anything globally.
And instead provide the config for each instance...

In node I've more or less moved completely away from any kind of global state (whenever possible). It requires a bit more work, in that we have to pass config options around, but things are easier to test and more predictable.