dmesg: more deterministic boot time detection

This fixes an issue which made second in human readable time formats to
wiggle.  One would expect the two dmesg runs below would be identical,
but the half second sleep should almost always make some timestamps to
differ.

diff -q <(dmesg --ctime) <(sleep 0.5 ; dmesg --ctime)

The source of the problem was non-deterministic get_boot_time() return
value wrap.  Mixing gettimeofday(), which has good resolution, with
sysinfo().uptime and time_t was not great.

Signed-off-by: Sami Kerola <kerolasa@iki.fi>