Extend operator>> on Rational to accept number at end of file.

The previous implementation of operator>> on Rational failed if the
rational number being read came at the end of a file without any
whitespace after the number.

While files are "supposed" to be terminated by a CR, it still seems
desireable to handle this case properly.
Raise exception on invalid Rational numbers.

Exceptions now raised when a Rational number is invalid:
* ZeroDivideException on a zero denominator
* ValueException when reading via operator>> and eof, error, or
  non-numeric data encountered.