BUG: specify package versions more strictly
BUG: submission: do not include or use 'pk' field in forms (fixes #101)

Including primary keys in forms offers possible attack vectors.  In the
case here, they are not necessary because the component is selected via
the URLs (and that is a better place for authorization, and it is
presently controlled on that level).
BUG: submission: require user to log in before validating submissions
Merge pull request #117 from pv/bug/ownership-check

BUG: Do not include or use 'pk' field in forms
ENH: add an easier way to run all tests + enable Travis

Also fix the tox configuration, and add Travis config.  Separate the
requirements to a separate file that can be reused.
BUG: filestorage: fix invalid usage of repo.add

Semantics of repo.add were changed in 94490d, but call sites were not
changed.
BUG: filestorage/dvcs_wrapper: make it raise understandable errors on DVCS failures rather than returning garbage
BUG: filestorage/dvcs_wrapper: control VCS command environment

This ensures that the VCS command doesn't pick up e.g. user names from
the environment.

Set home directory, to avoid using invalid hgrc/gitconfig files.
BUG: fix DVCS commit command

The user name must always be provided, as we intentionally avoid
supplying environment to the VCS command.
ENH: submission: show most recent revisions only in tag view
BUG: submissions: respect is_displayed in Revision.objects.most_recent()
BUG: rest_comments: use a temporary dir for Sphinx builds

Use a separate temporary compilation directory for each Sphinx
invocation. This avoids possible race conditions.

Also cleaned up the code, and fixed an issue where the conf file failed
to get copied to the compilation dir.
Merge pull request #126 from pv/fix-dvcs

BUG: Fix bugs in DVCS wrappers
Merge pull request #128 from pv/builddir-init

BUG: rest_comments: use a temporary dir for Sphinx builds
Merge pull request #127 from pv/most-recent

ENH: show only most recent revisions
DOC: rewrite README
BUG: fix brittle path manipulations

Use os.path.join instead of concatenating strings, use os.path.relpath
rather than relying on brittle assumptions.
BUG: fix zip file upload location

Django refuses to upload files outside MEDIA_ROOT, so we have to make
sure we use paths relative to it.
ENH: store all non-static data files under data/

This includes uploads, sqlite databases, compilation caches, etc.
MAINT: split the sample fixture to a basic part + sample submissions part