Further tuning to get error output correct.
Further adjustments to error reporting

Only use the first arg of the exception args, otherwise attempts
to stringify can blow up because the other args aren't necessarily
strings. Meh.
Adjust unicode handling of path_info to deal with lame servers

This entire journey started because the server provided by
wsgiref is not very modern with how it deals with path_info.

In fact it is currently bad enough to not be able to properly
deal with encoded content in python3. In those environments
it is necessary, for the time being, to use some other server.

Since the built in server is really only designed for simple
testing this may be okay, but it is still annoying.

Potentially none of these changes were really needed, as the
behavior hasn't really changed, but the code paths that were
explored to try and find the issues led to less code.