fix crash when changesrevision <param> is missing
use loop to clean up unit tests
remove trailing whitespace
allow specifying which tests to run via CLI args
make it easier to switch test class when filtering tests
remove unused timestamps field in svn fixtures
make test dividers more noticeable
make it more obvious where versionformat tests are
make various methods preserve cwd

It adheres to the Principle of Least Surprise; there may be other less
robust code elsewhere which makes assumptions about the working
directory based on a previous os.chdir().
chdir to package directory immediately prior to source service run

Source services expect to be run from within the package's checked out
working directory.  Previously the test suite would chdir() to this
directory during each test's setUp().  However this was brittle, since
anything after the setUp() phase could (and did) chdir() elsewhere.

This is required in order to test changesrevision, since tar_scm needs
to be run from the package's checked out source directory in order to
detect a pre-existing _servicedata file.
improve assertion message for tar_scm exit code
guard against unsupported SCMs
improve usage text
give help text more logical order
make user name/email publicly accessible from git fixtures

This will be used by the changesgenerate tests.
store git and hg hashes in full

This will be required to accurately test changesrevision,
since the _servicedata file needs to store full git SHA1 hashes,
not the abbreviated version.
add some debugging for changesgenerate code
add tests for changesgenerate
fix crash during copy of _servicedata

Before the Python rewrite, if the existing _servicedata was reusable, it
would be unconditionally copied from $SRCDIR to $MYOUTDIR.  The rewrite
introduced a call to os.path.samefile() which fails due to _servicedata
not existing in outdir.
fix format of new changes to match old shell tar_scm

The Python rewrite broke the format used for writing new changes.