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.
The correct notation for a hashes where the keys are strings and the values are hashes with string keys (and any other type in their values) is: `[:[:var]]`
``