Add support for binary assets back in.

Filters that expect binary input will need to declare a `binary_input`
attribute. Otherwise they will be passed data in Unicode strings.

Binary outputs will be converted to Unicode strings before each filter
that doesn't declare itself as supporting binary input. That includes
input files read from disk.

Output files written to disk will be encoded in utf-8 if the last filter
output Unicode, otherwise the binary data output by the last filter.