Change core.Tree to an opaque, immutable type
Change core.Stream to an opaque, immutable type
Introduce core type StringEncoder