Use signed 64-bit for timestamp values.

Signed 64-bit timestamps give us enough space to work with (in a
practical sense) that we don't have to deal with signed/unsigned or
wraparound issues.
Use gettimeofday() for 64-bit timestamp_t.
Use std::chrono::high_resolution_clock.
Clean up type conversions.