fix #371: Support utf-8 URLs with Python 3.x

Fixed a bug in the unit test tools collection that prevented the
existing test from triggering the error, improved the test and fixed
the bug.

Python3 PEP-3333 confom webservers translate the PATH_INFO field to
unicode via 'latin1'. Bottle applications expect utf-8 everywhere. This
fix re-codes the PATH_INFO field to utf-8 before it is passed to the
router. Clients that send invalid utf-8 sequences will get a 400 error.

Workaround for Bottle 0.11::

    if bottle.py3k:
        @bottle.hook('before_request'):
        def fix_path_info():
             path = bottle.request['PATH_INFO']
             path = path.encode('latin1').decode('utf8')
             bottle.request['PATH_INFO'] = path