refactor the test suite to use shoulda-matchers and rspec-spies
add Travis CI integration