Remove duplicate Rational#round
Remove unnecessary Rational methods

This includes `#%`, `#div`, and `#divmod`, which are already handled
correctly by the `Numeric` superclass.
General clean up of Rational class

  * alphabeticalize methods by name and visibility
  * use switches instead of if/elsif's
  * use integer division instead of #div
Make Rational#marshal_load private

`Rational#marshal_load` technically shouldn't be visible as a method.

See <https://github.com/ruby/ruby/commit/003c45f9cd>.
Build a new Rational instead of recurring for rational-integer arithmetic
Use non-strict float conversion in rational-float arithmetic

The numerator and denominator both must be `Numeric` anyway.
Use Rational constructor when the rational is already in lowest terms

This prevents having to perform reduction using the `Kernel` method.
Rename Rational#divide to #/

`#divide` does not formally exist in the Rational class.

This also implements the missing method `#quo`, which is an alias of
`#/`.
Add specs for Rational#truncate
Clean up specs for Rational#round
Add specs for Rational#floor
Add precision specs for Rational#ceil
Rewrite Rational#ceil specs for the context of no arguments
Add precision parameter to Rational#{ceil,floor,round,truncate}
Merge pull request #2636 from razielgn/removed-dead-variables

Removed dead variables.
Remove no longer needed KCODE handling code
Guard rb_set_kcode in C-API specs
Set release date for 2.0.0.
Unset the release date.
Merge pull request #2637 from zaeleus/rational

Clean up Rational and add precision parameter to truncation methods