raise an ArgumentError when millis is a Bignum as Joda cannot support such "times"

* that is earlier than 292 275 054 BC or later than 292 278 993 AD ...
fix logic for Date#year: should add 1 only during JulianChronology (before @sg)
Date#rfc3339 is now defined as strftime('%FT%T%:z')
%v in Time is %e-%^b-%Y and is %e-%b-%Y for Date/DateTime
handle %L as a special case of %N and fix 1.8/1.9 conditions
separate millis and nsec nicely with setNSec() only ms to ns

* I so wish millis of DateTime was always 0 and nsec be nanoseconds
do not use DateTimeZone.forOffsetHoursMinutes() since it can be problematic in non-latest joda-time

* also, Ruby handles division of a negative in a way not conforming to this usage
remove all unused code for Date#strftime. Best commit ever!
handle Astronomical year numbering within RubyDateFormat too

* from logic in date.rb (which is way simpler)
* tests coming in RubySpec
Date#initialize: do not compute @of and @sg, much faster to save them directly for now

ruby 2.0.0p247
Date.new 924.9 ns/i ± 13.60 ( 1.5%) <=>   1081082 ips

jruby: before
Date.new 20.72 µs/i ± 0.337 ( 1.6%) <=>     48260 ips

jruby: after
Date.new 10.61 µs/i ± 0.102 ( 1.0%) <=>     94207 ips

jruby: without creation of the DateTime
Date.new 7.483 µs/i ± 0.212 ( 2.8%) <=>    133643 ips

jruby: without computation of millis from ajd (through Rationals)
Date.new 4.980 µs/i ± 0.068 ( 1.4%) <=>    200788 ips

* ideal scenario is creating the DateTime from civil parameters directly (year, month, day)
  and never rely on @ajd, but it means rewriting many methods of Date
Optimize Date._iso8601

* Passes test__iso8601

* ruby 2.0.0p247
  Date._iso8601 9.046 µs/i ± 0.053 ( 0.6%) <=>    110548 ips
* before
  Date._iso8601 72.35 µs/i ± 24.68 (34.1%) <=>     13821 ips
* after
  Date._iso8601 5.185 µs/i ± 0.065 ( 1.3%) <=>    192847 ips

* Date.iso8601 is twice faster, bottleneck seems now #complete_frags
forgot a private'
Date._* parsing methods return an empty hash in 2.0, do it since we intend to pass those tests

* Actually the C code simply allocate the Hash upfront and
  pass it to sub-matchers, leaving it untouched if nothing matches.
optimize Date.valid_date_frags?: use simple return and clear checks instead of generic and throw/catch
add a fast path for civil date creation from parsing [CHEAT]

* but MRI does it too in d_new_by_frags()!
* Takes 21.08µs vs 33.78µs for Date.iso8601("2011-03-08"),
  might not be worth it and get removed.
rewrite and optimize Date.complete_frags

* single #max_by instead of #map + #select + #sort_by + #last
* simple #count instead of #values_at + #compact
* no use in counting if :hour, :min and :sec match for every format
* do not bother setting those for simple Dates (not DateTimes)
* remove sec = min(sec, 59), this is nonsense!
set offset to 0 if out of range [-day, +day] when parsing and warn as MRI
default width of year is varying between 4 and 5 depending on the sign in MRI
handle ':' after width and other format flags in strftime

* proper handling would be a parser
handle correctly padding of negative numbers and their padder in formatNumber()

* `"-" + Long.toString(-value)` is simply `Long.toString(value)`