Feature/diff duration

As discussed in #282, the diff function now returns a duration instead
of just a millisecond number for the one parameter incantation.
Internally, diff uses the duration to perform the math.  This commit
passes all but two of the unit tests (fails regarding returning years as
floats).  This is not ready to be merged in.

I am opening this pull request to ask for help as to how to correctly write this function and to start some momentum on the feature.