Ehoogerbeets

Updated for iLib, and added many new rows for various i18n features. Other libraries slots need to be updated to put the check marks for all these new features.
Currently, the Javascript engines do not allow you to do the following:

- Find out what the user's TZ environment variable is set to
- Use any zone other than what the current time zone is (ie. Date.getOffset()) that the Javascript engine itself is using
- Figure out what the IANA name of the current time zone is. You can get the offset, but not the name. There are often multiple zones that currently have the same offset from UTC but different offsets historically or different after the switch to/from daylight time, which means you can guess the zone name from the offset but you never know for sure unless you ask the user.
- Calculate the offset to UTC of any other time zone, and therefore the difference between the local time zone and any other time zone
- Figure out when the transition dates are at the start or end of daylight time for any zone. You can find the dates for the current zone by doing a bisection search starting at Jan 1 and July 1, but that is a heavy-weight way of doing it

So, based on this, ilib has its own definitions of the time zones in json format, compiled from the IANA database in a node-based version of the zone info compiler (zic). This is most useful in web pages where it does not have access to the local system time zone database in /usr/share/zoneinfo (on unix) or other folders on Windows or Mac.

If you run ilib in nodejs and you have access to /usr/share/zoneinfo, ilib has the ability to read those binary files directly instead of using its own json files. That way, the system's idea of a zone's rules matches ilib's idea of those same rules. We had a bug on webOS where ilib was updated to the latest zone info, but the linux OS itself underneath was old, and the time displayed in web pages for certain zones was different than the time displayed in C/C++ apps. This made for a very confusing UI, obviously!