Fix duration as getters (years and months convert to whole days)

This is an attempt to complete #1894 and fix #1884.

I've used Math.round instead of Math.floor to output whole days from months and years.
Rounding instead of flooring gives output that feels more realistic.

I've added tests for each of the units from/to, that leap year days are added correctly, and that multiple months output real day values.