Add support for tox (http://tox.testrun.org/) and Travis CI (http://travis-ci.org/)

Sample Travis CI run: http://travis-ci.org/#!/msabramo/pinax/builds/1706171

To set up Travis CI for your own repo, see http://about.travis-ci.org/docs/user/getting-started/

Tox output:

```
[last: 0] marca@scml-marca:~/dev/git-repos/pinax$ tox
GLOB sdist-make: /Users/marca/dev/git-repos/pinax/setup.py
py26 sdist-reinst: /Users/marca/dev/git-repos/pinax/.tox/dist/Pinax-0.9b1.dev10.zip
py26 runtests: commands[0]
Requirement already satisfied (use --upgrade to upgrade): Django==1.3.1 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 10))
Requirement already satisfied (use --upgrade to upgrade): Pinax in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 11))
Requirement already satisfied (use --upgrade to upgrade): django-debug-toolbar==0.9.1 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 13))
Requirement already satisfied (use --upgrade to upgrade): django-staticfiles==1.2.1 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 14))
Requirement already satisfied (use --upgrade to upgrade): django-compressor==1.1.2 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 15))
Requirement already satisfied (use --upgrade to upgrade): django-mailer==0.2a1 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 17))
Requirement already satisfied (use --upgrade to upgrade): django-email-confirmation==0.2 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 18))
Requirement already satisfied (use --upgrade to upgrade): django-timezones==0.2 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 19))
Requirement already satisfied (use --upgrade to upgrade): pytz==2011n in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 20))
Requirement already satisfied (use --upgrade to upgrade): django-openid==0.3a1 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 21))
Requirement already satisfied (use --upgrade to upgrade): python-openid==2.2.5 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 22))
Requirement already satisfied (use --upgrade to upgrade): django-announcements==0.1.2 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 24))
Requirement already satisfied (use --upgrade to upgrade): django-pagination==1.0.7 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 25))
Requirement already satisfied (use --upgrade to upgrade): django-notification==0.2 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 26))
Requirement already satisfied (use --upgrade to upgrade): idios==0.2a1 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 27))
Requirement already satisfied (use --upgrade to upgrade): metron==0.1 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 28))
Requirement already satisfied (use --upgrade to upgrade): pinax-theme-bootstrap==2.0.1 in ./.tox/py26/lib/python2.6/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 30))
Requirement already satisfied (use --upgrade to upgrade): django-appconf>=0.4 in ./.tox/py26/lib/python2.6/site-packages (from django-staticfiles==1.2.1->-r pinax/projects/basic_project/requirements/base.txt (line 14))
Cleaning up...
py26 runtests: commands[1]
/Users/marca/dev/git-repos/pinax/.tox/py26/lib/python2.6/site-packages/django/db/__init__.py:19: DeprecationWarning: settings.DATABASE_* is deprecated; use settings.DATABASES instead.
  DeprecationWarning
/Users/marca/dev/git-repos/pinax/.tox/py26/lib/python2.6/site-packages/django/db/__init__.py:60: DeprecationWarning: Short names for ENGINE in database configurations are deprecated. Prepend default.ENGINE with 'django.db.backends.'
  DeprecationWarning
Creating test database for alias 'default' (':memory:')...
Creating tables ...
Creating table django_site
Creating table emailconfirmation_emailaddress
Creating table emailconfirmation_emailconfirmation
Creating table django_content_type
Creating table signup_codes_signupcode
Creating table signup_codes_signupcoderesult
Creating table django_admin_log
Creating table account_account
Creating table account_passwordreset
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table mailer_message
Creating table mailer_dontsendentry
Creating table mailer_messagelog
Creating table django_session
Creating table django_openid_nonce
Creating table django_openid_association
Creating table django_openid_useropenidassociation
Installing custom SQL ...
Installing indexes ...
No fixtures found.
test_authenticated_password_change_view (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_change_password (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_password_change_view (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_signal_password_change (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_confirm_complete (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_different_passwords (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_invalid (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_invalid_post (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_valid (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_found (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_not_found (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_not_verified (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_password_reset_view (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok

----------------------------------------------------------------------
Ran 13 tests in 2.584s

OK
Destroying test database for alias 'default' (':memory:')...
py27 sdist-reinst: /Users/marca/dev/git-repos/pinax/.tox/dist/Pinax-0.9b1.dev10.zip
py27 runtests: commands[0]
Requirement already satisfied (use --upgrade to upgrade): Django==1.3.1 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 10))
Requirement already satisfied (use --upgrade to upgrade): Pinax in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 11))
Requirement already satisfied (use --upgrade to upgrade): django-debug-toolbar==0.9.1 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 13))
Requirement already satisfied (use --upgrade to upgrade): django-staticfiles==1.2.1 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 14))
Requirement already satisfied (use --upgrade to upgrade): django-compressor==1.1.2 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 15))
Requirement already satisfied (use --upgrade to upgrade): django-mailer==0.2a1 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 17))
Requirement already satisfied (use --upgrade to upgrade): django-email-confirmation==0.2 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 18))
Requirement already satisfied (use --upgrade to upgrade): django-timezones==0.2 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 19))
Requirement already satisfied (use --upgrade to upgrade): pytz==2011n in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 20))
Requirement already satisfied (use --upgrade to upgrade): django-openid==0.3a1 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 21))
Requirement already satisfied (use --upgrade to upgrade): python-openid==2.2.5 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 22))
Requirement already satisfied (use --upgrade to upgrade): django-announcements==0.1.2 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 24))
Requirement already satisfied (use --upgrade to upgrade): django-pagination==1.0.7 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 25))
Requirement already satisfied (use --upgrade to upgrade): django-notification==0.2 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 26))
Requirement already satisfied (use --upgrade to upgrade): idios==0.2a1 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 27))
Requirement already satisfied (use --upgrade to upgrade): metron==0.1 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 28))
Requirement already satisfied (use --upgrade to upgrade): pinax-theme-bootstrap==2.0.1 in ./.tox/py27/lib/python2.7/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 30))
Requirement already satisfied (use --upgrade to upgrade): django-appconf>=0.4 in ./.tox/py27/lib/python2.7/site-packages (from django-staticfiles==1.2.1->-r pinax/projects/basic_project/requirements/base.txt (line 14))
Cleaning up...
py27 runtests: commands[1]
Creating test database for alias 'default' (':memory:')...
Creating tables ...
Creating table django_site
Creating table emailconfirmation_emailaddress
Creating table emailconfirmation_emailconfirmation
Creating table django_content_type
Creating table signup_codes_signupcode
Creating table signup_codes_signupcoderesult
Creating table django_admin_log
Creating table account_account
Creating table account_passwordreset
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table mailer_message
Creating table mailer_dontsendentry
Creating table mailer_messagelog
Creating table django_session
Creating table django_openid_nonce
Creating table django_openid_association
Creating table django_openid_useropenidassociation
Installing custom SQL ...
Installing indexes ...
No fixtures found.
test_authenticated_password_change_view (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_change_password (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_password_change_view (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_signal_password_change (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_confirm_complete (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_different_passwords (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_invalid (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_invalid_post (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_valid (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_found (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_not_found (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_not_verified (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_password_reset_view (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok

----------------------------------------------------------------------
Ran 13 tests in 2.191s

OK
Destroying test database for alias 'default' (':memory:')...
pypy sdist-reinst: /Users/marca/dev/git-repos/pinax/.tox/dist/Pinax-0.9b1.dev10.zip
pypy runtests: commands[0]
Requirement already satisfied (use --upgrade to upgrade): Django==1.3.1 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 10))
Requirement already satisfied (use --upgrade to upgrade): Pinax in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 11))
Requirement already satisfied (use --upgrade to upgrade): django-debug-toolbar==0.9.1 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 13))
Requirement already satisfied (use --upgrade to upgrade): django-staticfiles==1.2.1 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 14))
Requirement already satisfied (use --upgrade to upgrade): django-compressor==1.1.2 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 15))
Requirement already satisfied (use --upgrade to upgrade): django-mailer==0.2a1 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 17))
Requirement already satisfied (use --upgrade to upgrade): django-email-confirmation==0.2 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 18))
Requirement already satisfied (use --upgrade to upgrade): django-timezones==0.2 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 19))
Requirement already satisfied (use --upgrade to upgrade): pytz==2011n in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 20))
Requirement already satisfied (use --upgrade to upgrade): django-openid==0.3a1 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 21))
Requirement already satisfied (use --upgrade to upgrade): python-openid==2.2.5 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 22))
Requirement already satisfied (use --upgrade to upgrade): django-announcements==0.1.2 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 24))
Requirement already satisfied (use --upgrade to upgrade): django-pagination==1.0.7 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 25))
Requirement already satisfied (use --upgrade to upgrade): django-notification==0.2 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 26))
Requirement already satisfied (use --upgrade to upgrade): idios==0.2a1 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 27))
Requirement already satisfied (use --upgrade to upgrade): metron==0.1 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 28))
Requirement already satisfied (use --upgrade to upgrade): pinax-theme-bootstrap==2.0.1 in ./.tox/pypy/site-packages (from -r pinax/projects/basic_project/requirements/base.txt (line 30))
Requirement already satisfied (use --upgrade to upgrade): django-appconf>=0.4 in ./.tox/pypy/site-packages (from django-staticfiles==1.2.1->-r pinax/projects/basic_project/requirements/base.txt (line 14))
Cleaning up...
pypy runtests: commands[1]
Creating test database for alias 'default' (':memory:')...
Creating tables ...
Creating table django_site
Creating table emailconfirmation_emailaddress
Creating table emailconfirmation_emailconfirmation
Creating table django_content_type
Creating table signup_codes_signupcode
Creating table signup_codes_signupcoderesult
Creating table django_admin_log
Creating table account_account
Creating table account_passwordreset
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table auth_message
Creating table mailer_message
Creating table mailer_dontsendentry
Creating table mailer_messagelog
Creating table django_session
Creating table django_openid_nonce
Creating table django_openid_association
Creating table django_openid_useropenidassociation
Installing custom SQL ...
Installing indexes ...
No fixtures found.
test_authenticated_password_change_view (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_change_password (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_password_change_view (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_signal_password_change (pinax.apps.account.tests.test_change_password.ChangePasswordTest) ... ok
test_confirm_complete (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_different_passwords (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_invalid (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_invalid_post (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_confirm_valid (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_found (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_not_found (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_email_not_verified (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok
test_password_reset_view (pinax.apps.account.tests.test_password_reset.PasswordResetTest) ... ok

----------------------------------------------------------------------
Ran 13 tests in 4.876s

OK
Destroying test database for alias 'default' (':memory:')...
_________________________________________________________________________ summary __________________________________________________________________________
  py26: commands succeeded
  py27: commands succeeded
  pypy: commands succeeded
  congratulations :)
```