chore(spin): migrate API from input/outputstream to reader/writer

- changes the API to be based on String/characters instead of byte[]/byte
  and respective streams
- decouples the encoding used internally in the data formats from what is
  returned by the API
- restricts Spin to text-based data formats

related to CAM-2903