ENH: Add svn support to SlicerWizard

Add support for subversion repositories to SlicerWizard. This covers
ExtensionDescription and several methods in Utilities (e.g. getRepo),
and should allow the Extension Wizard 'describe' and 'contribute'
commands to work with svn repositories.
ENH: Degrade gracefully if git unavailable

Modify SlicerWizard 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.
STYLE: Document SlicerWizard/TemplateManager.py

Add documentation for the public API of
SlicerWizard.ExtensionDescription. Also, make some minor code
improvements suggested in the course of writing the same:

- Allow clear() to take an optional name of a single attribute to remove
- Accept any object with a callable write() method as a stream in
  write()

Also, because we want to use it here, add a new reST role when
generating the documentation to create links to the Slicer wiki. (This
is useful because (1) it will allow us to later enhance the same to
select the appropriate version's documentation, and (2) the full links
are bloody long; way over our desired 80 character limit.)