Specify ImportError on ctach clause

Catching all exceptions on a failed import is a "bad thing".

The python2v3 import check for urlparse/urllib.parse now explicitly
catches just ImportError
Move version information to a separate file

Now I see why the version number was often hard-coded into setup.py.

Importing the package to get it also meant that all of the
dependencies had to be installed simply to build the package or docs.
Testing with readthedocs, pypi,and Jenkins has educated me.

However, I still don't like having this information (version, author,
and email) hard coded at multiple places. So I've move it all to a
VERSION.py in the repository root, and modified all the setup and
documentation configuration files to reference that.

We'll see how long it is before it becomes clear this is also a
mistake. Everyone else can't be wrong.