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.

=== Advantages

The primary advantage is that a `DateWithOffset` that has a `function`
for its `offset` will automatically readjust when setters (e.g.
`setMonth`) are called.

=== Disadvantages

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.