archivematicaClient: improve error reporting

The generic exception case was printing the __str__() representation
of an exception tuple from sys.exc_info(), which turns out to be not
very useful. Similarly, the OSError case was printing the __str__()
representation of the exception object, which prints only the message
and not the backtrace.

Compare before:

(<type 'exceptions.UnicodeDecodeError'>, UnicodeDecodeError('ascii', '--transferUUID "ab9f8be4-f7e8-43b2-9f80-1a8078a45d18" --sipDirectory "/var/archivematica/sharedDirectory/currentlyProcessing/unicode49-ab9f8be4-f7e8-43b2-9f80-1a8078a45d18/" --filePath "/var/archivematica/sharedDirectory/currentlyProcessing/unicode49-ab9f8be4-f7e8-43b2-9f80-1a8078a45d18/objects/\xe3\x80\x90\xe7\xa5\x9e\xe6\x9b\xb2\xe3\x80\x91\xe3\x83\x86\xe3\x82\xa4\xe3\x83\xab\xe3\x82\xb3\xe3\x83\xb3\xe3\x83\x81\xe3\x82\xa7\xe3\x83\xab\xe3\x83\x88\xe4\xb8\xbb\xe9\xa1\x8c\xe6\xad\x8c\xe3\x80\x8eFor LITTLE TAIL\xe3\x80\x8f.mp3" --fileUUID "None" --eventIdentifierUUID "%taskUUID%" --date "2013-09-25T23:47:20.335850"', 296, 297, 'ordinal not in range(128)'), <traceback object at 0x166e5a8>)

to after:

Traceback (most recent call last):
  File "/usr/lib/archivematica/MCPClient/archivematicaClient.py", line 141, in executeCommand
    arguments = arguments.replace ( key, replacementDic[key] )
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 296: ordinal not in range(128)

refs #5668.
archivematicaClient: coerce dashboardUUID to str

dashboardUUID may be returned from the database as a unicode instead
of an str. This causes an enormous amount of problems later when
performing the replacement of placeholder values with actual values.

The problem occurs if any of the arguments to a command to be run
contain unicode, or other non-ASCII, text. The text is brought in from
Gearman as cPickle data and is unmarshalled as an str, regardless of its
original content. Later on, the placeholder values are replaced using
the str replace() method using the values in the replacementDic dict
as arguments.

When python encounters string replacements where the object is an str
and one of the arguments is a unicode, or vice versa, python tries to
coerce both objects into the same type. Unfortuntaely when doing so, it
assumes that "str" is synonymous with "ASCII", and tries to convert the
str into a unicode as though it were ASCII. This fails if any character
values above 128 are present, which will of course be the case if the
value is actually UTF-8 being represented as an str.

fixes #5668