io_monad_pollution

Pollute edasAssemble, the assembler pass, with the IO monad because
getCurrentTime needs to insert the current time into the assembler's
intermediate state. Yucky, but needs to be done to implement the
'Date' and 'Time' pseudo operations.

At least the IO monad pollution is limited to one function, despite
extensive changes to the way the test harness works (formerly pure
functions now lift into the IO monad.)

Fixed up formatting/alignments in the test harness.

Pseudo-operations: "DATE", "TIME", "DSYM" and "DX"