Improve _init_vio()

* move code from SoundFile.__init__() into _init_vio()
* the dictionary with callback functions is now "hidden" in _init_vio()
* the invocation of sf_open_*() is now clearer
* the error message is at the right place
* _init_vio() is now a "real" method because self is actually used
Remove support for _length attribute of file-like objects

See also #1.
Remove unnecessary local variables
Change "vio" to "virtual_io"

As suggested by @bastibe in #31.