Minor Python 3 fixes

basestring does not exist anymore in Python 3: use six.string_types instead.

In "try: .../except Exception as err: ...", err is a local variable, it does no
more exist after the except block. Copy the exception in a new cls_error
variable to fix Python 3 support.

Extract of Python 3 documentation: "When an exception has been assigned using
as target, it is cleared at the end of the except clause. (...) Exceptions are
cleared because with the traceback attached to them, they form a reference
cycle with the stack frame, keeping all locals in that frame alive until the
next garbage collection occurs."

http://docs.python.org/3.3/reference/compound_stmts.html#try

Change-Id: I2efb14b3838f78d1ed5e09b3ccd4e796a3448aee
Merge "Minor Python 3 fixes"