refactor specs by using custome matchers

The specs have a lot of reused code that could do with some refactoring.
This commit adds several custome matchers and test helper functions, and
refactors the tests to use them:

* Matchers
  - be_signed_in
  - be_signed_out
  - have_success_message(message)
  - have_error_message(message)
* Helpers
  - signin_as(user): Use a user (e.g. via FactoryGirl.build) to signin
  - signup_as(user): Use a user (e.g. via FactoryGirl.build) to signup