Encode time.Time fields as ISO8601 in UTC

CloudWatch requires time.Time fields ISO8601. Other APIs may require
different encodings not covered in this commit.

time.Time.IsZero() is used to check for presence of the field instead of
reflect.Value.IsValid() because the latter returns true for time.Time
zero values.

Time zone conversion to UTC is covered in the date choices in
query_test.go.

Fixes #27