Removed some calls to str() for playing nice with Python3.

Thought I checked everything on the previous patch but I forgot stuff. my bad.

I'm not quite sure why you would want to have opcodes and data as `str()` specifically and not rely on what is returned by the read on the binary mode file? Not doing this lets us have proper bytes in Python 3.

I also prefer to use unpack_from even if it isn't necessary in this case, because that allows you to do `unpack_from("<B", foobar[offset:])`, which wouldn't work with a simple unpack because then the single byte `foobar[offset:offset+1]` will be considered an `int` which doesn't have the buffer interface. (This is also what I did on the previous pull request)