Make Reader and Writer our primary interfaces, and make their concrete implementations private
Add Writer.Flush