Test suite enhancements

* Set up new test targets for travis.
  * All tests are passing on every supported target at the moment.
* Update travis build status icon/link (if you'd be so inclined as to turn it on for this project).
* Remove `exit` test from basic suite.
* Add new callbacks suite which tests for `onExit` being called.
* Use a timeout for `onExit` to make it an appropriate replacement for removed basic test.
* Several build system improvements
  * Ensure proper process exit code is used on failure when running tests.
  * Use reusable callbacks for logging success/failures.
  * Ensure build artifacts are always cleaned up.
  * Don't report success when tests fail.