Support sf_open_fd(), remove obsolete argument virtual_io

The first constructor argument can now be:
- a string (path to a file)
- an int (a file descriptor)
- a file-like object

The argument virtual_io is not needed, because this can be detected
automatically.

Closes #19
Fall back to read() if readinto() is not available

See #19