Refactored the writer framework to be a system of mixins. This will make for easier extension as well as easier documentation.