def initialize opts={}
      n = opts[:n] || 1
      Offsets::LIST.each do |key, klass|
        if opts.key?(key)
          @offset = klass.new(n * opts[key])
          break
        end
      end

      @offset = Offsets::Day.new(7*n*opts[:weeks]) if opts[:weeks]
    end
A Daru::DateOffset object is created by a passing certain options
to the constructor, which determine the kind of offset the object
will support.

You can pass one of the following options followed by their number
to the DateOffset constructor:

* :secs - Create a seconds offset
* :mins - Create a minutes offset
* :hours - Create an hours offset
* :days  - Create a days offset
* :weeks - Create a weeks offset
* :months - Create a months offset
* :years - Create a years offset

Additionaly, passing the `:n` option will apply the offset that many times.

@example Usage of DateOffset
# Create an offset of 3 weeks.
offset = Daru::DateOffset.new(weeks: 3)
offset + DateTime.new(2012,5,3)
#=> #<DateTime: 2012-05-24T00:00:00+00:00 ((2456072j,0s,0n),+0s,2299161j)>

# Create an offset of 5 hours
offset = Daru::DateOffset.new(hours: 5)
offset + DateTime.new(2015,3,3,23,5,1)
#=> #<DateTime: 2015-03-04T04:05:01+00:00 ((2457086j,14701s,0n),+0s,2299161j)>

# Create an offset of 2 minutes, applied 5 times
offset = Daru::DateOffset.new(mins: 2, n: 5)
offset + DateTime.new(2011,5,3,3,5)
#=> #<DateTime: 2011-05-03T03:15:00+00:00 ((2455685j,11700s,0n),+0s,2299161j)>