Fix #localtime and #gmtime when they are given numeric offsets

In Ruby 2.0, `#localtime` gained the ability to parse offsets as numbers of seconds from UTC. This patch fixes that functionality (and makes the relevant tests pass) by making #localtime and #gmtime use a common arg parser to determine the time zone offset from the passed IRubyObject. Additionally, #localtime always modifies the receiver now per the documentation, rather than returning a new object if an offset
was passed.

`numExact` is a direct port of the same code in C. I suspect it can be improved, but I don't know the JRuby API well enough yet to say how that might be.