fix workaround for java timezone bug, and add test to ensure bug does not return

originally this code worked around a (reportedly) Java bug, but did so in a way that didn't actually work, so it was likely that any timezones that were actually GMT would cause a failure. Now we have a test to ensure that "GMT" as a timezone still works, and invalid timezones are still caught.