Add granulating the time range

Granulating means splitting the time range into exclusive time
ranges of years, months, days and whatever is left.
Do TimeRange objects ever allow changing their properties (ie. range boundaries)? If not, I would just do
```ruby
def granulate
  @granulate ||= Granulate.new self
end
```