- added constructors to allow passing in config instead of from system properties
- greatly reduced use of static fields and methods, use final where possible
- use logging library (log4j) instead of system.out
- code formatting / modernization:
  - use braces around 1-line if statements
  - use foreach loops
- synchronization when opening new stream and when reading/writing to stream in daemon mode
- added junit and basic unit test
- fixed bug in splitting tag name/value, didn't work when value contained a colon
- updated Tag.parseValue() to allow returning a Double when the source value is a fraction (e.g. 1/4)