Make failed tests return proper exit/status code

I was hoping that there was some kind of magic that made the test runner
call sys.exit in the same way the .main call does, but apparently not.
Would be silly if it did anyway.
Add 20 second timeout for unit testing

For some reason Travis (probably due to loaded down workers) runs unit
tests about twice as slow as any other machine I've ran them on.
Since these are tests we might as well be liberal and avoid false
negatives.
Merge remote-tracking branch 'Lagg_version/master'