Port url.py and test_url.py to Python 3:

 * Conditionalize the unicode type.
 * Only call _decode() if the argument type is bytes
 * Make sure URL instances are hashable; Python 3 requires __hash__ to be
   explicitly defined if __eq__ is defined.
 * Fix path_qs() to use the empty string as the "no value" instead of None.
   Python 3's urlunsplit() requires homogenous types.
 * In Python 3, filter() does not return a concrete list.