Fix for #224: Fractional radical simplification

Fix for issue #224.
The point is that the code should be written in a way so that it never segfaults. As it is now, just by passing there a new subclass of Number would make the code segfault. So that's wrong. Essentially just remember, that whenever you use `rcp_static_cast<const Rational>(b)`, you need to have an `if (is_a<Rational>(*b))` statement in front of it.