Refactor out I/O ops from util.Properties

Added
* util.PropertiesStreamReader
* util.PropertiesStreamWriter

writing now also supports writing to different charsets to be consistent with reading.
Because actually, comments are being stripped off by the reader, already. They're not contained in the util.Properties object :-)