added a csv writer demo
getColumns return Object[] instead of List, more ergonomic
changed interface to write to PrintStream instead of File