[ fix, refactor ] (,) is Traversable

* Fix: dealing with the recursive case when sparkling random colours

* Refactor: Using `traverse action` rather than horrible things like:
  `\ (w, c) -> action c >>= \ c' -> return (w, c')`