Fix formatting / parsing for Android

Ensuring that this Android bug is fixed for the next Android release:
https://code.google.com/p/android/issues/detail?id=66135

On Android the SimpleDateFormat for "zzz" returns GMT+00:00.
This is regrettable but awkward to change as it is existing
behavior.
https://code.google.com/p/android/issues/detail?id=66136

This change also fixes a bug where the default timezone
is used for parsing non-standard date/times.

This change also fixes a bug where the timezone from one parse
could leak into another.
As far as I can tell, it _does_ modify the timezone of its internal Calendar class temporarily, but it always puts it back to what it was originally, so this step isn't useful. I think we should nuke it.

Otherwise LGTM.