Add thread synchronisation mechanism:

* Call sync to send a heartbeat message
* Namespace heartbeat message with param to sync: sync(:foo)
* Call wait from a separate thread to block the current thread until heartbeat is received
* Namespace heartbeat messages with param to wait: wait(:foo)
* Best 12 lines of code ever

````
def clock
  sync :clock_beat
  sleep 1
end

def drum
  wait :clock_beat
  sample :heavy_kick
end

def synth
  wait :clock_beat
  play 30
  sleep 0.25
  play 35
end

in_thread{loop{clock}}
in_thread{loop{drum}}
in_thread{loop{synth}}
````