Fix bug fetching out unset timestamp values.

If your row exists but has an empty timestamp column, your time.Time
bind variable was being initialized to epoch time 0. Now it returns
early and does not modify the bind variable. I considered having it
instead set the bind variable to the go zero time.Time value, but
since that is techincally a legitimate time value as well it still
doesn't solve the semipredicate problem.

I tweaked the timestamp marshal code to do "val.UnixNano() / 1000000"
instead of "val.UnixNano() / time.Millisecond" because it doesn't make
sense to do operations directly between integers and time.Duration values.
The latter only works because the base unit for time.Duration happens to
be nanoseconds.
Why was this changed? I understand the reasoning behind the move from time.Millisecond to 1000000 but why are we no longer using UTC? Shouldn't the timestamp be UTC so the value is consistent globally?