Make `ordinalDate` more efficient

For `fromOrdinalDate` the change is trivial: just using bit shifts instead of dividing by 4.

For `toOrdinalDate` we do a completely different computation, which requires (about) 2 divisions instead of 4.

Also adding appropriate benchmarks and tests, and making the tests a bit more thorough (100 iterations is not enough to catch subtle bugs).