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.