Use rule set tables to determine zone offset.

The Timezone library now uses the timezone tables to search for historic
timezone offsets using a binary search.

The code shrinks as we remove a mess of logic for stumbling around the Olson as
JSON files, trying to match a time to a clock transition. Prior to this commit,
the size of the uglified and gzipped `lib/timezone.js` was well over 5k.

    File                             Raw         Min         Zip     Min/Zip
    lib/timezone.js          39923/38.99 15006/14.65  8175/07.98  5773/05.64

Afterwards, we're 1k smaller.

    File                             Raw         Min         Zip     Min/Zip
    lib/timezone.js          31512/30.77 12009/11.73  7066/06.90  4701/04.59

We still have a ways to go to get to a size that is going to appeal to people
adopting the library.

Some adjustments were made to the JSON rule set table formats. The rule set name
is added as the first element of the stored array, and the offset of the last
clock transition is added as the second element of the stored array. All other
offsets are calculated by subtracting wall-clock time from POSIX time, but that
is the offset when the clock transition occurred, not the offset that the clock
transition applies. You determine the offset that a clock transition applies by
looking at the difference between wall-clock and POSIX of the time of the
subsequent clock transition.

The savings used to determine if a wall-clock time parsed to milliseconds since
the epoch lands in the interval that is skipped when we spring forward. However,
we're not yet accounting for any hours skipped by switching standard time
offsets.

The means of loading timezones is fussier than it was before. Before we were
loading a continent at a time. Now we are loading a rule set at a time. In our
tests now, we create a `detroit` timezone function from `tz` by calling
`require` to load the table,  and also passing in `"America/Detroit"` as the
timezone string. Looks redundant.

Not sure how it is supposed to look. It is premature to attempt to address this
redundancy. Right now, I'm focused on getting the feature set to work, verifying
that the timezone offset calculation works correctly. Initialization needs to be
informed by experience with applications.

It's just that it looks so janky right now. I don't want to get used to it so
that I of it is not janky.

It is the asynchronous load that the browser demands that creates the
redundancy. Otherwise, we could load the required zone, one way or another,
within the `tz` function. However, because of the browser we can't encapsulate
this, because asynchronous calls to do not encapsulate. The `tz` function would
need to accept a callback.

That is ugly; formatting a date with a function that sends the format to a
callback.

For Node.js usage, an autoloader does make the most sense. A synchronous call to
load the 0.6k zone files as needed.

Otherwise, to get synchronous use of `tz` without I/O operations in the browser
or in Node.js, one can load all of he Olson as JSON files, and compile tables as
needed.

Size of the Olson as JSON files after uglify and gzip for `northamerica.js` is
7193 and for `southamerica.jdds` is 3834. Size of the JSON rule set tables in the
`America` directory catenated together in a file and gzipped is 27757. Size of
the 7-bit ASCII encoded rule set tables is 21711.

The total size of 11027 for `northamerica.js` plus 3601 for `forward.js` means
that for 14628, you can build the tables as you need them.

I'd imagine that there are people who are going to want to show the time of a
single user selected timezone, so then it is cheaper to pull down one 0.6k
timezone rule set table. If the user changes their preferred timezone,
downloading another 0.6k file can be part of that fuss. There would be two
places where tables are fetched asynchronously, initialization and the
configuration dialog. That would be a reasonable for one rule set or a small
handful of rule sets.

Because the correct timezone abbreviation is selected, and formatted correctly:

Closes #1.
Merge branch `zone-lookup` into `tabular`.