Implement `invcmp` and use it with String and Time

This diff implements the JRuby equivalent of Ruby's `invcmp` method
intended to be used to make reverse comparisons with a safe-guard
against a mutual-recursion stack overflow. It also uses `invcmp` for
`Time#<=>` and `String#<=>`, at the same time bringing `String#<=>` up
to spec with Ruby 2.0.