Tox testing fixes

* the tox config was broken, and apparently this is why not many people ever attempted to run it.
* Added scripts/test_setup.py for establishing required packages for testing, depending on Python version
* Add scripts/run_tests.py to give one way to run the tests in a cross-python manner.
Add travis configuration file

Travis is the only way to avoid silent code rot because of people forgetting
to run tests. Also protects pull requests.
Add vagrant support for running tox

The fact that tox covers Python2.4 --> Python 3.2 is a pain. It relies on a specific setup
allowing installation of ZeroMQ, SQLAlchemy and more, and also a vanilla installation of Python 2.4 and 2.5.

The Vagrant image takes a while to load, but at least gives a clean, agreed-upon environment in which tests must succeed.
It establishes an Ubuntu 12.04, 64-bit image, with deadsnakes Pythons, and runs tox inside it.

It can be easily invoked with "make vagrant_toxtest"
Python 3.x compatibility

This is quite a major change. It brings many compatibility changes for many parts of the library. Apparently many of them never really succeeded or even
attempted by tox...

* move to use the six library for many portability features
* move to unittest2 as the main implementation of the unit tests
* fix broken tests for encoded messages with unicode args and vice-versa. These were broken before, seemingly without relation to the current changes.
* Make the skip_if on tests actually work as expected, and result in actual test skips.