Include agent errors in hesokuri.see/shrink

If the agent is not in an error state, the presentation does not change.
Move heartbeats from hesokuri.util to hesokuri.heartbeats

Refactored the code to avoid using the Java Thread API. The state of the
heartbeats - what function and args they are invoking and which heartbeats are
active - are stored in an agent that is visible in the dump page in the web UI.