fix handling of non-ASCII exception messages

Non-ASCII characters can happen in exception messages when, for example,
a non-ASCII FQDN is given for a system and it fails validation:

    Traceback (most recent call last):
      File "/usr/lib/python2.6/site-packages/flask/app.py", line 1817, in wsgi_app
        response = self.full_dispatch_request()
    [...]
      File "/usr/lib/python2.6/site-packages/bkr/server/flask_util.py", line 133, in wrapper
        return f(*args, **kwds)
      File "/usr/lib/python2.6/site-packages/bkr/server/systems.py", line 554, in update_system
        system.date_modified = datetime.datetime.utcnow()
      File "/usr/lib64/python2.6/contextlib.py", line 34, in __exit__
        self.gen.throw(type, value, traceback)
      File "/usr/lib/python2.6/site-packages/bkr/server/flask_util.py", line 125, in convert_internal_errors
        raise BadRequest400(str(exc))
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 26-29: ordinal not in range(128)

There is a test which covers this situation but it missed the actual
exception because it was only checking the client-side HTML5 validation
error. I just happened to notice this on the server side by coincidence.

Flask already handles this properly so long as we just pass the unicode
straight through. For proper handling on the client side we also need to
set the MIME charset in error responses.

Change-Id: I5f80e703f7e3cc9c5abc8070bcade02de0771d31