Expose deep effect expansion routines.
Add null case for hasIO.
Add "frozen-purity" annotations for functions, fix deep effect expansion.

A lambda will have two purity annotations; the standard Pure annotation
will always be present since the construction of a function is always
pure, and the FPure annotation if the body of the function is also pure.