Convert non-text parsers to use byte data types
Handle binary and text modes as appropriate in bookmark parsers and reader

New “mode” property to indicate whether a parser should be fed byte or
character data. The HTML parser needs to be fed text. The XBEL parser uses
Element Tree which in turn uses Expat, which seems to work best by
determining the encoding from the content, otherwise the “stdin” encoding
will override an encoding specified in the content. The Pickle parser is
probably best entirely using binary.

The BookmarkReader class now handles text encoding or decoding depending on
parser mode and whether “stdin” is being read. The “bookmarks.main” module
now uses the BookmarkReader class.
Close file in case of exception
Pass binary file to bookmark writers; caller should close the file

Pickle is best as binary; XBEL and HTML both need to create their own text
encoders because they need a specific “error” character encoder.