Use RSpec 3 matchers

Fairly large refactor to use RSpec 3 syntax instead of the `.should` syntax