Fix Unicode handling by opening file in binary mode in one case. All other cases either pass a string path or already open in binary mode.
Add ability to override encoding when creating parsers, turns out this wasn't the real problem, etree should be capable of handling the encoding on its own, since xml files can declare their encoding at the top of their document.