Add Daylight-Savings support

This commit adds Daylight-Savings support by allowint the `offset` object to be a `function` that takes in a `Date` (or `DateWithOffset`) and emits a numeric offset.

Unfortunately, it adds a great deal of complexity and, depending on the implementation of the Daylight-Savings-aware timezone function, significant performance penalties on many functions. Additionally, it becomes difficult to reconcile the concepts of "Rich Offset Object"

    { name: "Tokyo", valueOf: function() { return 540; } }

with the Daylight-Savings-aware timezone function. If a client wants combine those concepts, does she write a `function` that returns such a rich object? Or use a rich object that responds to `call(context, date)`?

On the whole, I am unsatisfied with this branch.