Use purescript-dom from contrib

purescript-dom only exports DOM types which are equivalent to those in
this library. Since its available from purescript-contrib, its pretty
widely used so this should use that version.

Without this change, mixing effectful code that uses
purescript-contrib's DOM and code from this library won't compile
because there will be a duplicate row in the effect monad.
Fix row name conflict in timeout functions

If you're running an effect that needs the DOM (which is pretty common),
the previous code would cause a compile error due to a duplicate effect
row `dom :: DOM`. This solves that case. The only way I could see this
being a problem is if you needed to fire callback code that *must not*
have access to the DOM, but I don't think that's a terribly reasonable
expectation since you need the DOM to even fire a callback.
Merge branch 'purescript-dom'