Add some useful io specifc combinators to ResultT.
A general Profiler data type, in the same style as Trace.

This is still pretty rough and could do with some clean
up. But it is probably useful as a proof of concept.