Added tests and fixed a bug.
Added state to the Report monad.
Added extension mechanism

Made the Report monad carry state which
can be extended with any type which is an
instance of Default and Typeable.