Update rational.hpp

split normalize() into 2 smaller functions.

removed to_double() member function

changed euklid gcd to binary gcd and now uses unsigned integers