Use Number as the base numeric class

Subclasses can be Rational, Integer and possibly other in the future.
Add mulint, addint, powint for the Number class
Simplify as_coef_term()
Implement is_a_Number (works for subclasses)

And use it.
Implement virtual functions Number::add, etc.

Polish the code a bit.
Fix a typo
Add the Rational class
Make Rational subclass of Number
Remove few methods
Implement is_canonical()
Polish
Test Rational
Implement integer()
More tests, stricter Rational::is_canonical()
Rational 4/2 now returns an Integer
Test mulrat()
Rename *int to *num in number.h
Add more tests, refactor
Refactor
Refactor