Reorganise tests into unit and functional categories.

Tox (and hence Travis) only runs unit tests
Functional tests can be run manually, with the default Python version