Each line

Improve IStream and Path for easiness of reading.

First, add new iterator `each_line` that lazily `read_line` of a stream.

Second, wrap some reading methods on `Path` so that the input of data from files is really easy.

~~~nit
var content = "/etc/issue".to_path.read_all

for l in "/etc/passwd".to_path.each_line do
   var fields = l.split(":")
   print "name={fields[0]} uid={fields[2]}"
end
~~~

TODO: better error management
pas vraiment car l'objectif est de tester avec aussi des vrais fichiers (c'est comme ça que j'ai trouvé le bug du double close d'ailleurs).
Les StringIStream sont utilisés dans les docunits.