read()/write() overhaul

Replace ffi.new() with np.empty() and np.ascontiguousarray()

Remove dicts for readers/writers

read():
* reserve only as much memory as needed (if 'frames' is too large)
* check return value of sf_readf_*()

write():
* avoid copy if data has already the correct memory layout
* check return value of sf_writef_*()
* don't return the number of written frames!
  This is for symmetry with read() and it's redundant information anyway
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
Fix typo in PyPI description
Add open(), read() and write() functions

This is the combination of a few commits from #18, plus a few more
things.
See also #14.