ENH: Allow looking up github repository by URL

Change GithubHelper.getRepo to take either a name or clone URL, adding
the ability to look up a repository by a clone URL. This is needed to
find the github repository for an extension that has already been
published.
ENH: Improve ExtensionDescription API

Add ability to directly construct an ExtensionDescription from a file
path. Note that unlike read() this takes the path to a description file,
not a directory containing a (single) extension description. This is
intended to be used to read extension descriptions from the index
repository.
ENH: Add compare URL when updating extension

Change SlicerWizard.py to load the old extension description when
submitting an update to an extension, and to use this to generate and
include a compare URL in the pull request message with the changes in
the extension from the currently available (indexed) version.
ENH: Add 'describe extension' to SlicerWizard.py

Add an action to "describe" an extension (i.e. dump its generated
description content to stdout). This is useful both as a user check
before publishing, and potentially can be used by CMake as an alternate
means of generating the s4ext file for the build.

Note that at the moment the extension must have a git repository.
Eventually we want to support subversion repositories and also
extensions that don't yet have a repository, but a number of places will
need to change for that (e.g. publishing should also support svn).