> Python has excellent facilities for writing simple files and their use is very common

Python doesn't have much better IO facilities (at least in 2.x) than C's stdlib has. I can't imagine, for example, in Pandas to use `read_csv()` and open a file manually every time.

> on top of this simple free function interface

That's exactly the other way around. We should start from a well defined set OOP APIs and then create a simple function interface. Look at `bokeh.glyph` and `bokeh.plotting` APIs. Which came first and which is the basis for another one? 

In a different playground, in Java you have a very complex set of OOP APIs for IO management. Powerful but inconvenient. Then in Scala there is a library that takes this and takes advantage of Scala's DSL capabilities to create an IO API that is still powerful, if you want, but also very convenient, see [1].

I know we won't improve/fix this and other things I pointed out in this PR. Really we shouldn't, it's already too big. We just just merge this, if tests pass, and improve outlined areas *iteratively*.

[1] http://jesseeichar.github.io/scala-io-doc/0.4.3/index.html#!/overview