Add arguments always_2d, out and fill_value

See also #16

If less frames are left in the file than would fit into out and
fill_value=None, a smaller view into out is returned that contains only
the valid frames.

This includes several suggestions by @bastibe from #37.
Factor out _read_or_write()
Improvements to _read_or_write()

* add comment for documentation
* add check for array shape
* add an assertion
Add repr() in error message

This adds single quotes to strings and it avoids an error with string
formatting if "name" happens to be a tuple.

See also #31.
Remove superfluous "struct"
Move module constants into cdef

As suggested by @bastibe in #31.
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.
Refactor _check_array() out of _read_or_write()
Merge pull request #36 from bastibe/read-write

Several changes to the read() and write() methods
Updated tests to the latest version from #37
Add open(), read() and write() functions

This is the combination of a few commits from #18.
See also #14.