Add granulating the time range

Granulating means splitting the time range into exclusive time
ranges of years, months, days and whatever is left.
The 1.hour and .{beginning,end}_of_{period} bother me a bit. We should make sure we have those available/required in the gem regardless of their availability in unrelated code, no?