streams cleanup
Partially inspired by #527 (closed), there is a bit of a mishmash of allocators for streams. Relying on a dynamic cast for deletion just looks wrong.
-
Should rejig to use pointers (not references) internally since this will allow better behaviour with any open/close methods that would be nice to add.
-
Should have a bidirectional wrapped stringstream to avoid some copying during tokenizing of dictionaries.