Uses Appraisal in order to test the different versions of minitest. The entire test suite will not run with minitest 5, since ruby relies on `Minitest::Unit::TestCase`, which was deprecated. Also, the previous solution was flawed since the `Minitest` constant was defined in minitest 4 as an alias to `MiniTest`, therefore I also check for the version number (`Minitest::Unit::VERSION`). I extracted the logic of checking which framework is loaded to a separate class, `M::Frameworks`, so it can be checked them on both the tests and the library code.
…e latest pry gem requires this higher version; VERSION constant in M module is only defined unless it already exists (running test with bundler gives already defined constant error otherwise)