formattedWrite should take its output range parameter by ref.
See also: #10291 and #9102
Rational: To copy a range is only defined using .save for forward ranges and makes no sense for output ranges in the general case and shouldn't be done implicitly.
Writing output ranges with state (for example an indenter, that inserts tabs on newline and forwards its input to another range) should not require an extra indirection if written using a struct.
http://forum.dlang.org/thread/[email protected]#post-wbvdkmqsxrimuipufdix:40forum.dlang.org