Read the seed from /dev/urandom.

If the seed in not specified on using the --seed argument, it will
be determined by reading /dev/urandom. Previously the seed was generated
using time(0). However, this is problematic if several jobs are started
in parallel. Using /dev/urandom mitigates that issue.
Add a basic timer implementation.

This timer times the user, system and wall (clock) time of the
simulation. Currently reports the elapsed time at the end.