Use CharSource/Sink objects to support more input sources
Javadoc run. Fixes #4
Fix up assorted issues with clearing out empty nodes