Rejig tests

 * Remove the `have_problem` and `only_have_problem` matchers in favour of a new `contain_{warning,error,fixed}` matcher. This matcher greatly improves the readability of the specs and improves the output of the tests on failure.
 * Changes all the specs over to the new rspec `expect` syntax
 * Updates the `define defined inside a class` message to `defined type defined inside a class`, because it annoyed me.