Update Helm.hs

Take the IORef out of the Engine state record and then replace most uses of the Cairo.Render monad with the Helm monad defined as such:

type Helm a = StateT Engine Cairo.Render a

I've made this change and then updated the entire source code to make use of the new monad in a type correct way. I tested all the demos and they work exactly as before.