Update shebang manipulation to work in more cases

If a python interpreter is specified to virtualenv using, eg
--python=python2.7, then this script ends up not rewriting the #! lines.
Instead of a suffix match, check that they end with something that exists
in the bin directory, and if so update them to point to that same thing in
the new path.
Add support for PyPy virtualenv directories

PyPy uses a slightly different virtualenv layout; instead of lib/python2.7
you'll see lib-python/2.7; adapt accordingly.  Also its bin/python ends up
being a symlink.  Finally, there is a bin/__pycache__ directory which needs
skipping in update_script().