BUG: Fix default exit code of Utilities.die

Change the default exit code of SlicerWizard.Utilities.die from 0 to 1.
The former is a poor choice as it means "success", which not usually the
case when calling die().
STYLE: Document and enhance ExtensionWizard.py

Add documentation of SlicerWizard.ExtensionWizard. Tweak create() and
addModule() commands to improve error reporting, and in particular for
addModule() to attempt to do nothing in case of an error (or at least,
to not write changes to the extension's CMakeLists.txt). Add a helper
wrapper around execute() to allow for much greater flexibility, e.g. if
it should cause the application to terminate (and newly do so
consistently) or return an exit code, and to allow CLI arguments to be
passed as method arguments (including gitpython-like kwargs support).
BUG: Find pull request more strictly

Change how the Extension Wizard looks up pull requests to do the look-up
not against the user that submitted the request, but against the
downstream repository (which should imply the user). I'm not sure if
github even allows a user to have multiple forks of the same upstream
repository, but this will guard against that in case it would ever
happen.
ENH: Confirm changes to extension information

Change how 'extensionwizard.py --publish' modifies the extension
information to prompt the user before making changes to URL's (the
HOMEPAGE in particular, but also the ICONURL) if the existing URL does
not have 'example.com' as the host. As example.com is a reserved name,
such a URL (e.g. the default values from the templates) cannot possible
be valid and so should be safe to change in all cases, but this should
cause us to stop and confirm if we're about to change a URL that the
user has already changed to some potentially valid location (e.g. the
wiki).
STYLE: Move git helpers to own module

Move the git helpers in SlicerWizard.Utilities to their own new module
SlicerWizard.GitHelpers. This allows SlicerWizard.Utilities to be used
if the 'git' module is not available.
ENH: Degrade gracefully if git unavailable

Modify SlicerWizard.ExtensionWizard to attempt to gracefully degrade
functionality if either of the 'git' or 'github' packages are not
available, in order to make them "soft" rather than "hard" dependencies.
ENH: Refactor and improve SlicerWizard arg parsing

Move conversion of Python method arguments to CLI arguments to its own
helper function in the Utilities module. Tweak this to handle non-string
arguments and to better handle bool and None arguments (note that a
named argument with the value None is now ignored, as is a named
argument with a value False; True is now used for flag options). Also
add support for "short" arguments (assuming a one-character name is
"short"). All this should make the conversion more intuitive and easier
to use.
ENH: Add Python Subversion module

Create a basic module for working with subversion repositories, loosely
based on GitPython. This will help us to work with extensions which use
svn for their source control. (None of the existing svn Python bindings
I tried were useful.)