Add granulating the time range

Granulating means splitting the time range into exclusive time
ranges of years, months, days and whatever is left.
split is a delegator that is used only once at init time and is private. You might want to consider just using extract_cycle(range, :year) instead, although I understand perhaps you wanted to add some semantics with 'split' to that initial extract_cycle invocation.