Massive refactoring of Writer interface, uses composition for it's behaviors now.

Regress in functionality as Images can not currently be written to files... yet.