Add open(), read() and write() functions

This is the combination of a few commits from #18, plus a few more
things.
See also #14.
Repeat function arguments in module-level functions

... instead of using *args and **kwargs.
Move documentation from read() function to read() method

Re-use constructor docstring for open()
Duplicate overlapping documentation in read()
Merge pull request #34 from bastibe/open-read-write

Add open(), read() and write() functions