Change argument checking in SoundFile.__init__()

This is an alternative to #60. Both are possible solutions to #59.

Advantages of this solution:

* the built-in `open()` function is not needed
* the `file` argument is straightforwardly passed to libsndfile

Disadvantages of this solution:

* the error messages after failing to open a file are just guesses. They may be misleading?
* if arguments are specified even if they are not needed, they are ignored (instead of raising an error)

More or less neutral points:

* the behavior is closer to libsndfile than to Python's `open()` function
* read and write positions can be handled independently