refactor rez_release.release_from_path into a class that will become the base class of specialized release procedures (e.g. svn, git, hg, etc)
rez_release: factor out a SvnRezRelease from the base RezRelease class
rez_release: create a working svn-free release mode.  provide a way to register new release modes.  avoid use of subprocess where built-in python functions will work.
rez_release: fix a few bugs related to the switch to python directory functions
rez_release: add RezRelease.available() and list_available_release_modes() for determining which modes are applicable to a give directory/setup.  This makes 'base' mode the default when pysvn cannot be imported.
rez_release: use copytree with hard links instead of a symbolic link to the directory
rez release: check for valid svn directory when testing if svn release mode is available
Refactor RezRelease base class so that init now only takes a path, and move other other arguments to RezRelease.release().
Add RezReleaseUnsupportedMode.
Rename RezRelease to RezReleaseMode
Refactor SvnRezRelease so that it serves as a better model for implementing new release modes.
rez-release help: Replace references to 'SVN' with more generic 'VCS'.
Change rez-svn-print-last-tag to use methods on rez_release.SvnRezReleaseMode
Add a mercurial release mode.
Add a cached property for the last_tagged_revision.  Provide get_changelog() method for Mercurial.
Move send_release_email into rez_release with the other release utility functions.  Remove uneeded rez_release_base.
rez-release: convert the post-variant-install cleanup code to pure python and provide it as a method.
Convert current python shell script pairs into argparse submodules.
This is in preparation for removing the bash wrappers entirely.  Completed 'config' and 'depends' commands.
Move and convert remaining python scripts into rez.commands.
Support sub-commands of arbitrary depth
Prettify brief help messages.
converted rez-make-yaml to python. renamed rez.commands to rez.cli.