Split up Integration and Unit tests

* Marks all tests as either integration or unit
* Creates a separate tox environment for each python + suite type
* Generate a ``tox.ini`` and ``.travis.yml`` using ``.matrix.yml`` instead of maintaining by hand.
* Fix a few test failures from being stricter
* Remove pytest-xdist as it introduces weird errors and splitting things up should make it faster.
I did remove it for a bit, then added it back. Even with the tests split PyPy takes > 50 minutes to run the integration tests.