Object prototype for inheritance.
Object prototype for inheritance.

Instead of copying the properties from one context to the next, we'll be using
prototypical inheritance going forward. We can use one object to store all the
properties, for the same reason we can plop any arguments into our call to `tz`,
because the different properties are distinct characteristics.

Locales always five characters with an underscore, we'll know zone information
because a rule set will exist, and format specifiers are always a single
character.

We're able to express the overwrite behavior of the `convert` function more
succinctly. When an argument is specified in the argument list, it overwrites
the property of the newly created list. Before it the logic was convoluted, one
argument list overwriting another, that was untested, and probably didn't work.

    File                             Raw         Min         Zip     Min/Zip
    lib/timezone.js          18391/17.96  8540/08.34  5026/04.91  3460/03.38

bigeasy/timezone,bigeasy/timezone,bigeasy/timezone