serve files in or below the directory of argv[0]

Replaces the original functionality of
CGIHTTPServer.CGIHTTPRequestHandler that required all and only
executable scripts to be in ./cgi-bin.  With the changed functionality,
the directory tree can be arbitrarily deep, and all and only *.py files
are executed (others are assumed to be of content-type text/html).
2nd try, having messed up in git.
get file extension even if url has a query
re-use is_python(); don't duplicate its logic
improve comments

I had hopes of relying on existing processing, but someone decided that
self.path should mean different things at different times.  It takes all
kinds.
call non-class method from CGIHTTPServer.py

Use Python syntax to eliminate a copy of
CGIHTTPServer._url_collapse_path_split  that I erroneously made.
improve comments

This aims to be the end of the branch that interprets a file as a Python
script if its name has a ".py" extension, rather than requiring that the
file be housed in a cgi-bin directory.