Run the unit tests before the integration tests

This will run all of our unit tests first on Travis before running the integration tests. This will allow a test failure in a unit test to short circuit a test run and prevent us from running the long tests if we know that they (should) fail. Additionally add a timeout to our tests so that a single test case cannot block forever waiting for Travis to time out the test run.

This should help reduce our impact on Travis CI to some extent /cc @joshk