Just use urlparse.urljoin

The path locality check was reversed, so ``urlparse.urljoin`` was being
used for local paths, and remote URIs were not working at all because
``os.path.join`` was being used for them. Just use ``urlparse.urljoin``.
Support override of URL opening function

to enable e.g. packages inside zip files, or restrictions on URIs
Remove unhelpful try-except wrapping

These just hid the original error, complicating troubleshooting. If user
needs to be spared the error details, then that should happen higher up.
Support setup.py develop if setuptools installed
Unicode empty string literals

Consistent with JSON parsing, to avoid warnings or errors when data
finds its way into unicode-careful code (like SQLAlchemy)
Use older dict init for <2.7 compatibility