Updated haskell.html.markdown with a better IO() tutorial

I have added a more detailed tutorial on IO(). I feel that what was there before would only make a newcomer confused. When I was learning this, the crucial insight was to understand how to interpret the types of the IO functions, and I tried to elucidate this.

There are also three minor, related changes:

I changed the `say` function to be Color -> String. I found the older version Color -> IO String confusing, and it did not compile anyway. I also use the new `say` function.

I added a note that the REPL can run IO actions.

There was a minor error in the `action` function that I fixed.