Python driver

Pull the changes to support the python driver, but into a branch separate from master until the port is finished and we are sure it is stable.