Fix iteritems usage with six for 2.x/3.x
Avoid "b'string'" in url_join on py3k

url_join() tries to allow incorporating different types of data in a path
by automatically formatting the arguments using '%s' % arg; while this
works on Python 2, on Python 3 you end up with /b'arg'/ instead of /arg/.

Mixing Unicode and byte data here is a bad idea as you don't know what
encoding is actually being used for the byte data; this commit changes
the code to raise an exception (in Python 2 or 3) if mixed Unicode/byte
arguments are passed, while allowing other data types to be used.