Make RarFile.open() return RawIOBase-compatible object
Make RarFile.open() return RawIOBase-compatible object

This can further be wrapped in BufferedReader and TextIOWrapper.

In case 'io' module is not available, the object will have
only minimal methods as always.

Behaviour changes:
- Previously .read(-1) returned empty string, now it reads
  until EOF, like .read().
- Previously uncompressed files used buffered stream, now
  it's unbuffered (DirectReader).  Compressed files used
  pipe from subprocess.Popen() which was always unbuffers.
  Now they behave the same.

BackupTheBerlios/rarfile,markokr/rarfile,markokr/rarfile,BackupTheBerlios/rarfile