ENH: Add 'submit extenstion' to SlicerWizard.py

Add a utility to manipulate slicer extension description files, which
can read an existing description file or create a description from an
extension git repository, and also write a description file (without
comments). Add helpers to get a named repository from github, or a
user's fork of a github repository. Add a git helper to find or create a
remote matching a specified fetch url. Modify git 'get repository'
helper to take a callable as the 'create' parameter in order to allow
enforcing that a newly-created repository is created in an empty (or
previously non-existing) directory.

Use all of the above to start implementing a 'submit extension' command,
which takes an extension repository and creates a pull request to add
the extension to the extensions index. So far this does everything but
create the actual pull request (i.e. handles the user's fork of the
index repository, and creating and pushing the commit against the index
repository to add or update the extension).