A bunch of changes, the biggest of which is a py.test-based test suite w/ travis & coveralls integration

You should use a file-level auto-run fixture for this