use Date arbitrary precision in #strftime (%N,%L) output

* need ThreadContext, use constructor to pass it
* pass all related Date/DateTime tests
* more arguments, but casting from Object (long versus Rational) seems bad
give Date#strftime's output the same encoding as the format String