Support libsndfile’s virtual file interface: http://www.mega-nerd.com/libsndfile/api.html#open_virtual .
* Pass a file-like object and set virtual_io=True in the constructor
* If the file-like object represents a stream of data such that seeking would be prohibitive,
  set stream=True. The file-like object must implement its own __len__ in this case.
Overload `virtual_io` parameter to accept `True`, `False` or `stream`.
Make pointer to file object persist as `self._user_data`.
Make definitions of vio functions into types, and use their names for
the callbacks.
Refactor how `vio_get_filelen` works, to use a pre-calculated `_length`:
* Regular files continue to use `seek`/`tell`
* Streams are expected to either set `_length` directly, or implement `__len__`
Fix typo.
Update README to include description of `Virtual IO` interface
Refactor callbacks to be dynamically generated, avoiding having to pass around a `user_data` pointer.
Update HTTP example to use `iter_content` + `BytesIO`.
Remove `stream` logic; it appears `libsndfile` needs to be able to rewind the file object’s position.
* Refactor `vio` struct creation to a distinct method
* Move file object size logic into `vio_get_filelen` callback
Actually call `self._init_vio`...
Refactor `_init_vio` to call `sf_open_virtual`.
Refactor `_init_vio` to construct a dict that is
passed to `SF_VIRTUAL_IO*`.
Persist struct representation inside `self._vio`.
Remove extraneous change.
Cleanup unnecessary references and `_init_vio` signature.
Merge branch 'davidblewett-master'